@Autowired
该注解是由spring提供的
按照类型注入
public class UserService { @Autowired private UserDao userDao; }
这样会有一个问题,当一个类型有多个bean值的时候,会造成无法选择具体注入哪一个的情况,这个时候我们需要配合着@Qualifier使用。
public class UserService { @Autowired @Qualifier(name="userDao1") private UserDao userDao; }
@Resource
@Resource注解由J2EE提供,需要导入包javax.annotation.Resource。
@Resource默认按照ByName自动注入。
Resource不允许找不到bean的情况,而Autowired允许(@Autowired(required = false))
指定name的方式不一样,@Resource(name = "baseDao"),@Autowired()@Qualifier("baseDao")
Resource默认通过name查找,而Autowired默认通过type查找
①如果同时指定了name和type,则从Spring上下文中找到唯一匹配的bean进行装配,找不到则抛出异常。
②如果指定了name,则从上下文中查找名称(id)匹配的bean进行装配,找不到则抛出异常。
③如果指定了type,则从上下文中找到类似匹配的唯一bean进行装配,找不到或是找到多个,都会抛出异常。
④如果既没有指定name,又没有指定type,则自动按照byName方式进行装配;如果没有匹配,则回退为一个原始类型进行匹配,如果匹配则自动装配。
@Resource可以减少代码和Spring之间的耦合。
来源:https://www.cnblogs.com/jichi/p/10073404.html和https://blog.csdn.net/balsamspear/article/details/87936936本文只用于学习,侵权请联系删除