实验十八@Autowired注解
在类中定义属性的时候再上一行加上@Autowired注解,会自动分配空间,并不用自己再new。
要求这个属性是容器中有的自定义类型,容器中没有则会报错
@Autowired
private Car myCar;
原理:1、先看属性的类型,按照类型去容器中找对应的组件 myCar = ioc.getBean(Car.)
1.1如果找到一个,直接装配
1.2如果没有找到,会跑异常
1.3如果找到多个,会继续按属性的名字作为id去容器中找(如果没有匹配上就会报错)
@Qualifier("")该注解放到@Autowired上面,意义就是用该注解中的内容作为id去匹配,而不是用属性的名字
@Autowired(required=false)其中required=false的意思是,找得到就装配,找不到就装配null而不报错
给方法话@Autowired注解,这个方法也会在bean创建的时候自动运行,而且会自动为方法的每一个形参自动赋值;
在方法的形参前面加上@Qualifier("")代表着用该注解中的内容作为id去匹配,而不是用属性的名字
其他自动装配的注解
@Autowired:最强大。Spring自己的注解
@Resource:j2ee规定的,java的标准
@Inject:EJB环境下用
@Autowired和@Resource比较:
@Resource拓展性更强,因为它是java的标准,如果切换成另外一个容器框架,@Resource还能被认识
@Autowired离开spring就无法使用了