@Configuration类中@PostConstruct的预期行为是什么?
我们正在重用一个使用spring java-
config(使用@Configuration)定义其bean的项目,并且在一个此类中有一个@PostConstruct
init方法。
这里的预期行为是什么?何时调用此方法?关于豆子,那就是。即,此方法的行为是否完全像配置类是Bean一样(实际上是一个吗?)
我们观察到的是,根据操作系统的不同,可以在@Autowired
初始化进入配置类的Bean之前调用它,从而最终导致不完全依赖项的工作。
回答:
即使对于@Configuration
,@PostConstruct
其行为也符合预期-
在注入类的依赖项后调用它。尽管这有点令人困惑(加上@Configuration
类是bean 的事实),但这是正确的。
当前的问题是在spring-security-oauth的帮助下引入了隐藏的循环依赖关系-这是一个复杂的配置集,超出了本讨论的范围。
因此,@PostConstruct
如果仅在循环依赖的情况下未完全初始化依赖的Bean
,则可以调用。如果依赖项是通过setter或字段注入提供的,则不会报告循环依赖项,而是使用不完整的bean。
这里还要注意的一点是,似乎循环依赖项处理取决于操作系统(这意味着某些JVM或JRE差异)。
以上是 @Configuration类中@PostConstruct的预期行为是什么? 的全部内容, 来源链接: utcz.com/qa/423971.html