-
Notifications
You must be signed in to change notification settings - Fork 618
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Custom ObjectMapper is not used #1159
Comments
We also stumbled over that issue. 😞 @Bean
@Primary
public JacksonMapper jacksonMapper(final ObjectMapper objectMapper) {
return new JacksonMapper(objectMapper);
} |
If I understood the issue correctly, the reason for 8b66fd2 was that you need to configure some things on the ObjectMapper and don't want this to affect the original one from the context. Wouldn't it make sense then to just I will submit a PR. This should restore the behavior from before the GH-1148 change without any additional configuration required. I still think #1160 is a valuable change as it would allow you to further configure the ObjectMapper to be used. |
Same here. 4.12: our modules and jackson settings are used
4.13: our modules and jackson settings are no long used
|
We suffer from the same issue as well. As a workaround, we are overriding the behavior of the
|
it does not work, fails to create a bean.
|
any updates on this issue? |
I've been also hit by this issue today 😅 . I think could be a nice fix the solution given by @sonallux Thanks |
We too are affected. import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.SerializationFeature;
import com.mycomp.framework.core.util.conditions.ConditionalOnDependencyVersion;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.config.BeanPostProcessor;
import org.springframework.boot.autoconfigure.AutoConfiguration;
import org.springframework.boot.autoconfigure.AutoConfigureBefore;
import org.springframework.boot.autoconfigure.condition.ConditionalOnClass;
import org.springframework.cloud.function.context.config.ContextFunctionCatalogAutoConfiguration;
import org.springframework.cloud.function.json.JacksonMapper;
import org.springframework.context.annotation.Bean;
@AutoConfiguration
@AutoConfigureBefore({ContextFunctionCatalogAutoConfiguration.class})
public class WorkaroundForCloudFunctions {
private static final Logger LOG = LoggerFactory.getLogger(WorkaroundForCloudFunctions.class);
//TODO remove when https://github.com/spring-cloud/spring-cloud-function/pull/1162 is released and used.
/**
* Background: <a href="https://github.com/spring-cloud/spring-cloud-stream/issues/2977">Github Issue</a>
*/
@ConditionalOnClass(JacksonMapper.class)
@ConditionalOnDependencyVersion(groupId = "org.springframework.cloud",
artifactId = "spring-cloud-function-context",
versionRequirement = "4.1.3")
@Bean
public BeanPostProcessor jacksonMapperFix(ObjectMapper objectMapper) {
return new BeanPostProcessor() {
@Override
public Object postProcessBeforeInitialization(Object bean, String beanName) throws BeansException {
if (bean instanceof JacksonMapper) {
LOG.warn("Injection custom JacksonMapper for spring-cloud-function-context.");
//replicate the modifications of ContextFunctionCatalogAutoConfiguration.JsonMapperConfiguration.jackson
var newOm = objectMapper.copy()
.configure(SerializationFeature.FAIL_ON_EMPTY_BEANS, false)
.configure(DeserializationFeature.FAIL_ON_TRAILING_TOKENS, true);
return new JacksonMapper(newOm);
}
return bean;
}
};
}
} Not the cleanest way to do it but effective. |
This issue has been addressed
|
Describe the bug
With the latest spring-cloud-function 4.1.3 release a custom
ObjectMapper
bean is no longer respected when creating theFunctionCatalog
in the ContextFunctionCatalogAutoConfiguration.java.We need this behaviour, because must configure the
ObjectMapper
to use the snake-case naming strategy.This regression is introduced by commit 8b66fd2 which fixed issue #1148.
Sample
If you really want an example I can provide some.
Possible Solution
I would like to propose the following solution to fix this issue. Adding a
@ConditionalOnMissingBean
on the bean definition of theJsonMapper
here. With this change one can easily provide a customJsonMapper
Bean wrapping a customObjectMapper
. This could also fix issue #1059.The text was updated successfully, but these errors were encountered: