spring02(@autowired注解的使用)

spring02
【spring02(@autowired注解的使用)】关于@autowired注解
@autowired注解可以自动装配对象,类中的对象不用被new 可以直接生成
@autowired注解的使用位置
1.可以放在变量前
2.可以放在构造函数前
3.可以放在set方法前
4.可以放在任意函数前
@autowired注解的required属性
@autowired(required=true)默认为true,默认必须能扫描到对象的那个类,若设置为false,则可以不扫描到。但是运行时会报空指针异常(nullpointerexcepition)则可用if 判断对象是否为空,再进行后续操作
面向接口编程时,@component注解要添加到实现类中而不是接口中,但是在主类声明时,是要声明接口类来创建对象,并将@autowired注解直接放在声明语句上。但是如果有多个实现类,则编译的时候就会产生歧义
解决方法:
1.在首选的类名上加入首选类注解@primary(但是具体运行时不能判断哪个是首选)
2.加入限定符注解@qualifier(“name ”),相当于给类加上标识符,在主类创建的属性前面加上同样的限定符即可
3.直接给类一个id,@component(“name”)即直接在后面加入一个id,则不需要@qualifier(“name”),当然在主类中还是要用@qualifier(“name”)来找到具体类
4.spring会为容器中的每个类自动分配一个默认的id,即为该类的名字(但是首字母是小写的)
5.jdk包中的@Resource注解,相当于@autowired+@qualifier(“name”)。在主类中直接使用@Resource(name=“name”)即可起到@autowired+@qualifier(“name”)的效果

    推荐阅读