spring02(@autowired注解的使用)

spring02

关于@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”)的效果

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值