spring的注入,可以分为两种,分别是手动注入和自动注入
我们这里要记录的是自动注入
自动注入模型
spring的自动注入模型有四种,分别是:
- autowire_no(0): 默认的装配模式,如果注入indexBean,没有在属性上加@Autowired或者@Resource,这时候,indexBean是无法注入的
- autowire_name(1): 通过set方法,并且set方法的名称必须和bean的name名称一致, byName
- autowire_type(2): 通过set方法,这种方式set方法可以任意命名,因为是按照set方法的参数类型来注入bean的, byType
- autowire_constructor(3): 通过构造器注入,如果userBean中注入了indexBean,那么必须提供一个带indexBean的构造函数,否则是null
spring默认的自动注入模型,是0,需要通过@Autowired或者@Resource注解注入;如果是非0的,可以不提供这两个注解;
应用
autowire_name
如果我们指定的自动注入模型是autowire_byname的话,那只需要提供set方法即可,并且set方法的方法名必须是注入属性的值,否则会无法注入
@Component
public class IndexBean {
}
@Component
public class UserBean {
private IndexBean indexBean;
public void setIndexBean123(IndexBean indexBean) {
System.out.println("通过set方法注入属性");
this.indexBean = indexBean;
}
public void setIndexBean(IndexBean indexBean){
System.out.println("空参setIndex方法执行")