Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在bean生命周期中何时调用setter注入_Java_Spring - Fatal编程技术网

Java 在bean生命周期中何时调用setter注入

Java 在bean生命周期中何时调用setter注入,java,spring,Java,Spring,我曾经读到,对于setter注入,依赖项在需要时才被注入。然而,当我在上面运行一个小测试时,我发现在使用setter注入时,依赖项在应用程序启动时被注入。实际上,在SpringBean生命周期中何时调用setter注入?“依赖项在需要时才被注入”是什么意思 无论您使用字段注入、setter注入或构造函数注入,依赖项总是在bean实例化之后或期间注入 因此,这取决于bean的初始化时间。默认情况下,所有bean都会在启动时进行初始化,这意味着它们的依赖关系也会在启动时被注入 这通常是一种理想的行为

我曾经读到,对于setter注入,依赖项在需要时才被注入。然而,当我在上面运行一个小测试时,我发现在使用setter注入时,依赖项在应用程序启动时被注入。实际上,在SpringBean生命周期中何时调用setter注入?“依赖项在需要时才被注入”是什么意思


无论您使用字段注入、setter注入或构造函数注入,依赖项总是在bean实例化之后或期间注入

因此,这取决于bean的初始化时间。默认情况下,所有bean都会在启动时进行初始化,这意味着它们的依赖关系也会在启动时被注入

这通常是一种理想的行为,因为它允许您在启动时发现由于bean配置而导致的错误,而不是几个小时甚至几天后

通过将bean注释为
@lazy
,可以将其更改为lazy初始化,直到需要它们为止。因此,如果您希望在访问
MainService
之前对其进行延迟初始化(即,其setter注入不会在启动时发生),您必须:

@Service
@Lazy
public class MainService {

} 

大体上看一下
@Lazy
注释和spring惰性初始化。
@Service
@Lazy
public class MainService {

}