我正在尝试使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/

10-10 07:52