我正在尝试使micronaut(1.2.6)使用我的代码实例化JacksonConfiguration
而不是默认机制。
我有这个:
@Factory
public class MyFactory {
@Singleton
public JacksonConfiguration jacksonConfiguration() {
JacksonConfiguration cfg = new JacksonConfiguration();
System.out.println("jacksonConfiguration() - hashcode is " + System.identityHashCode(cfg));
return cfg;
}
@Factory
public static class MyObjectMapperFactory extends ObjectMapperFactory {
@Override
@Singleton @Replaces(ObjectMapper.class)
public ObjectMapper objectMapper(@Nullable JacksonConfiguration jacksonConfiguration, @Nullable JsonFactory jsonFactory) {
System.out.println("objectMapper() - hashcode is " + System.identityHashCode(jacksonConfiguration));
return super.objectMapper(jacksonConfiguration, jsonFactory);
}
}
}
并且,尽管
ObjectMapper
工厂接收JacksonConfiguration
的实例,但从未调用过我的其他方法。我尝试将
@Replaces(JacksonConfiguration.class)
添加到我的jacksonConfiguration()
方法中,但这导致使用ObjectMapper
而不是null
实例调用JacksonConfiguration
工厂方法(不知道为什么)。如何替换默认的
JacksonConfiguraion
?PS:
我知道我可以忽略它并以我想要的任何方式实例化我的
ObjectMappers
(这是我会做的,直到我理解此问题为止)。此处的要点是,比找到特定的实际问题的解决方案/变通办法,是要更多地了解微型飞机的工作原理。
最佳答案
使用您当前的代码,我希望会引发NonUniqueBean异常,因为将有多个JacksonConfiguration bean。您应该将您的配置为@Replaces(JacksonConfiguration.class)
。
请注意,存在一个与替换配置属性Bean相关的错误,该错误已在1.3.0.M1和最新的1.2.8.BUILD-SNAPSHOT中解决,因此您将需要使用其中一个版本
关于java - 获取micronaut以使用我的`JacksonConfiguration`实例,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/59160012/