自动装配
@Autowired
1. 默认优先按照类型去容器中找对应的组件:applicationContext.getBean(BookDao.class);
-
如果找到多相同的组件 ,就再将属性的名称作为组件的Id 去容器里面查找 applicationContext.getBean(“bookdao”)
BookService{ @Auotwired BookDao bookdao; }
-
@Qualifier(“bookDao”) :使用@Qualifier 指定需要装配的组件Id 而不是使用属性名
-
自动装配 默认一定要把属性赋值好 没有就会报错 (@Autotwired(required =true)默认为true指定为false 就不会报错 并且自动装配中的Book service里面的bookDao =null
-
@Primary 让Spring 进行自动装配的时候 默认使用首选的bean 也可以使用@Qualifier 指点
@Resource(JSR250)
@Resource 可以和@Autowired 一样进行自动装配 自动装配中默认使用按照组件名称进行装配
同样可使用@Resourse(name =“bookDao2”) 来指定装配bookDao2
不支持@Primary功能和不支持@Autowired(reqiured = false);
@InJect(JSR330)
需要导入javax.inject 依赖
功能和@Autowired 一样 但是没有reqiued =fasle 的功能
@Autowired 是 Spring定义的 @Resourse 和@Inject 是java规范
AutowiredAnnotationBeanPostProcessor : 解析完成自动装配
方法 构造器的自动装配
@Autowired :构造器,常数,方法 属性都是容器中获取参数组件的值
1) 标记方法位置 (@Bean+方法参数 标注的方法创建对象的时候,方法参数的值从容器里面获取 默认不写@Autowired)
2 标记在有参构造器上面:如果只有一个有构造器。这个有参构造器上面的@Autowired可以省略 参数组件还是可以从容器中获取
3)参数位置