gpt4 book ai didi

java - 当使用 Spring 构造函数注入(inject)时,bean 是否在构造函数中完全初始化?

转载 作者:行者123 更新时间:2023-12-02 07:46:57 25 4
gpt4 key购买 nike

在 Spring 中使用构造函数注入(inject)时,可以安全地假设所有传递的 bean 都已完全初始化吗?

换句话说,当使用“经典”@Autowired 机制时,是否可以在构造函数中执行与使用 @PostConstruct 注解的方法相同的操作?或者是否有可能在调用构造函数后对传递的 bean 执行一些后处理?

最佳答案

使用@PostConstruct的要点在于,当您使用setter依赖注入(inject)时,构造函数不能用于完全初始化对象,并且需要在所有setter方法之后执行一些初始化已经被调用(因为需要注入(inject)依赖)。请注意,注释@PostConstruct在java 11中被完全删除,需要添加依赖javax.annotation-api让它工作。而且 @PostConstruct 只能注释到类中的一个方法,并且它在 bean 生命周期中只会执行一次。

但是通过使用构造函数注入(inject),我们本质上是解决调用构造函数时所有尚未注入(inject)的依赖项的问题。因此,如果您使用构造函数注入(inject),您可能不能使用@PostContruct

引用:https://docs.oracle.com/javaee/7/api/javax/annotation/PostConstruct.html

关于java - 当使用 Spring 构造函数注入(inject)时,bean 是否在构造函数中完全初始化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56215460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com