当前位置: 首页 > 面试题库 >

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

东门越
2023-03-14
问题内容

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

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

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


问题答案:

即使对于@Configuration@PostConstruct其行为也符合预期-
在注入类的依赖项后调用它。尽管这有点令人困惑(加上@Configuration类是bean 的事实),但这是正确的。

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

因此,@PostConstruct如果仅在循环依赖的情况下未完全初始化依赖的Bean
,则可以调用。如果依赖项是通过setter或字段注入提供的,则不会报告循环依赖项,而是使用不完整的bean。

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



 类似资料:
  • 我在Spring Boot项目中使用Resilience4J调用REST客户机,如下所示: 看到示例中包含了一个回退方法,我决定添加它,尽管我并不真的想调用不同的方法,我只想再次调用我的原始方法。 不管怎样,我指定了一个回落: 现在,我看到回退方法被重试,但是每次都会抛出HttpServerErrorException,这意味着使用者将收到一个异常作为对其调用的响应。 谢谢

  • 在流处理过程中遇到运行时异常时,流处理是否应该中止?它应该先结束吗?是否应在?异常是按原样重新生成还是已包装?的JavaDoc和java包。util。小溪对此无话可说。 我发现有关Stackoverflow的所有问题似乎都集中在如何从函数接口中包装一个已检查的异常,以使其代码能够编译。事实上,互联网上的博客帖子和类似文章都关注相同的警告。这与我无关。 根据我自己的经验,一旦抛出,序列流的处理就会中

  • 我的问题是关于内部方法调用情况下的AOP Spring行为。 首先,您能从技术上解释一下为什么代理对象不拦截内部调用吗?其次,检查一下我对第二个示例的理解是否正确。

  • 问题内容: 我注意到了一些意外的行为(相对于我的个人期望而言是意外的),我想知道是否是JVM中存在错误,或者这可能是一种边缘情况,在这种情况下我不了解某些确切的细节应该发生。假设我们自己在main方法中具有以下代码: 天真的期望是这样会印刷,最大的甚至可以代表。但是,我认为整数算术应该在Java中“翻转”,因此将1加到会导致。由于仍小于,因此循环将循环遍历负数甚至整数。最终它将回到0,并且此过程应

  • 问题内容: 我在kotlin-stdlib中遇到了注解,我想知道它是做什么用的,但是不幸的是,它没有记录。(UPD:那时) 据我了解,将其应用于程序元素会将修饰符添加到相应的字节码元素中。结果,该元素在Java中变得不可见: Java代码中的某处: 但是相同的元素在Kotlin代码中仍然可见: 隐藏来自非Kotlin来源的声明是否有效使用?它是预期用途吗?还有哪些其他合适的用例? 由于从Java隐