在Java中,依赖注入可能发生三种方法:
1.构造方法注入
2.setter方法注入
3.接口注入
请解释一下不同的bean自动注入模式?
在Spring有五个自动注入模式。
no:默认情况下,spring框架的自动注入选项,即默认情况不开启自动注入。这意味着你必须使用标签在bean定义中显式地设置依赖项。
byName:这个选项使基于bean的名称的依赖项注入。当自动装配在bean属性,用属性名搜索匹配的bean定义配置文件。如果找到这样的bean,注入属性。如果没有找到这样的bean,就会产生一个错误。
byType:该选项允许基于bean的类型的依赖项注入。当在bean属性需要自动注入时,使用属性类的类型来搜索匹配的bean定义配置文件。如果找到这样的bean,注入属性。如果没有找到这样的bean,就会产生一个错误。
constructor:构造方法类似于byType自动注入,但适用于构造方法的参数。在自动注入bean时,它在所有构造函数参数类型中寻找匹配的构造函数的类类型参数,然后进行自动注入,。请注意,如果在容器中没有一个bean构造函数参数类型满足,会抛出一个致命错误。
autodetect:自动侦测使用两种模式即构造函数或byType模式的自动注入。首先它将试图寻找有效的构造方法参数,如果发现构造方法模式则选择。如果没有构造方法中定义bean,或者明确的默认无参构造方法,则选择byType模式自动注入。