java - 让 micronaut 使用我的 `JacksonConfiguration` 实例

标签 java micronaut

我正在尝试让 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 (这就是我在理解这个问题之前要做的事情)。 这里的重点是更多地了解 micronaut 的工作原理,而不是寻找特定实际问题的解决方案/解决方法。

最佳答案

使用您当前的代码,我预计会抛出 NonUniqueBean 异常,因为会有多个 JacksonConfiguration beans。您应该将您的配置为 @Replaces(JacksonConfiguration.class)

请注意,存在一个与替换配置属性 bean 相关的错误,该错误已在 1.3.0.M1 和最新的 1.2.8.BUILD-SNAPSHOT 中解决,因此您需要使用这些版本之一

关于java - 让 micronaut 使用我的 `JacksonConfiguration` 实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59160012/

相关文章:

Micronaut数据: No backing RepositoryOperations configured for repository

micronaut - 是否可以针对某些 HTTP 状态代码跳过 Micronaut 断路器?

java - Gradle 在多模块 micronaut 项目上运行失败

java - 是否可以使用Java后端制作浏览器游戏?

java - Spring Data JPA - 具有无限递归的双向关系

java - 显示 SQL 错误信息

java - 有没有办法在测试之间停止 micronaut 计划的工作?

java - Micronaut - shadow fat-jar 插件不适用于公司 repo

java - 组织.postgresql.util.PSQLException : No value specified for parameter 1

java - 在 jOptionPane 中显示数据库中的信息