@Configuration类中@PostConstruct的预期行为是什么?

我们正在重用一个使用spring java-

config(使用@Configuration)定义其bean的项目,并且在一个此类中有一个@PostConstructinit方法。

这里的预期行为是什么?何时调用此方法?关于豆子,那就是。即,此方法的行为是否完全像配置类是Bean一样(实际上是一个吗?)

我们观察到的是,根据操作系统的不同,可以在@Autowired初始化进入配置类的Bean之前调用它,从而最终导致不完全依赖项的工作。

回答:

即使对于@Configuration@PostConstruct其行为也符合预期-

在注入类的依赖项后调用它。尽管这有点令人困惑(加上@Configuration类是bean 的事实),但这是正确的。

当前的问题是在spring-security-oauth的帮助下引入了隐藏的循环依赖关系-这是一个复杂的配置集,超出了本讨论的范围。

因此,@PostConstruct如果仅在循环依赖的情况下未完全初始化依赖的Bean

,则可以调用。如果依赖项是通过setter或字段注入提供的,则不会报告循环依赖项,而是使用不完整的bean。

这里还要注意的一点是,似乎循环依赖项处理取决于操作系统(这意味着某些JVM或JRE差异)。

以上是 @Configuration类中@PostConstruct的预期行为是什么? 的全部内容, 来源链接: utcz.com/qa/423971.html

回到顶部