当前位置: 首页 > 知识库问答 >
问题:

为什么这些形式的Autowire不能在@Configuration[重复]中工作

国俊艾
2023-03-14

跟进这个问题

我也尝试过,但是它没有noargs构造函数(你现在可以用服务/控制器/组件来实现,为什么它在这里不工作呢?)

@Configuration
class MyConfig {

    @Autowired
    MyConfig( final ObjectMapper mapper ) {
       ...
    }
}

然而这是可行的。

@Configuration // or @Service or some bean
class SomeClass ... {

    @Autowired
    private ObjectMapper objectMapper;

    @PostConstruct
    private void configureObjectMapper() {
        objectMapper.disable( SerializationFeature.WRITE_DATES_AS_TIMESTAMPS );
    }

}

为什么@Configuration不像其他Spring托管类那样工作?

共有1个答案

谭兴学
2023-03-14

我完全不认识你的第一个例子,也不知道它在哪里有效。

第二个例子,构造函数注入,并不是特别适用于配置类,因为Spring在开始构建bean之前,需要大量的魔法来分析和解决依赖关系图。配置类实际上是被代理的,因此它们的<code>@Bean</code>方法可以进行自我调用,并且仍然可以获得单例实例(或任何适当的范围)。因为配置类可以提供它自己依赖的bean,所以Spring需要一个无参数构造函数,这样它可以一次构建一个实例

我更喜欢的替代方法是在我的@Bean方法上使用参数注入,这不需要特殊的注释。

 类似资料: