Autowired与Resource

@Autowired

@Autowired(推荐使⽤)
@Autowired为Spring提供的注解,需要导⼊包org.springframework.beans.factory.annotation.Autowired
@Autowired采取的策略为按照类型注⼊

public class TransferServiceImpl {
	 @Autowired
	 private AccountDao accountDao;
}

如上代码所示,这样装配回去spring容器中找到类型为AccountDao的类,然后将其注⼊进来。这样会产⽣⼀个问题,当⼀个类型有多个bean值的时候,会造成⽆法选择具体注⼊哪⼀个的情况,这个时候我们需要配合着@Qualifier使⽤。
@Qualifier告诉Spring具体去装配哪个对象。

public class TransferServiceImpl {
	 @Autowired
	 @Qualifier(name="jdbcAccountDaoImpl") 
	 private AccountDao accountDao;
}

这个时候我们就可以通过类型和名称定位到我们想注⼊的对象。

@Resource

@Resource 注解由 J2EE 提供,需要导⼊包 javax.annotation.Resource
@Resource 默认按照 ByName ⾃动注⼊

public class TransferService {
	 @Resource 
	 private AccountDao accountDao;
	 @Resource(name="studentDao") 
	 private StudentDao studentDao;
	 @Resource(type="TeacherDao") 
	 private TeacherDao teacherDao;
	 @Resource(name="manDao",type="ManDao") 
	 private ManDao manDao;
}
  • 如果同时指定了 name 和 type,则从Spring上下⽂中找到唯⼀匹配的bean进⾏装配,找不到则抛出异常。
  • 如果指定了 name,则从上下⽂中查找名称(id)匹配的bean进⾏装配,找不到则抛出异常。
  • 如果指定了 type,则从上下⽂中找到类似匹配的唯⼀bean进⾏装配,找不到或是找到多个,都会抛出异常。
  • 如果既没有指定name,⼜没有指定type,则⾃动按照byName⽅式进⾏装配;

注意:
@Resource 在 Jdk 11中已经移除,如果要使⽤,需要单独引⼊jar包

<dependency>
 <groupId>javax.annotation</groupId>
 <artifactId>javax.annotation-api</artifactId>
 <version>1.3.2</version>
</dependency>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值