美文网首页
@Resource 和 @Autowired

@Resource 和 @Autowired

作者: 轻轻敲醒沉睡的心灵 | 来源:发表于2020-11-22 11:35 被阅读0次

1. 用途

@Resource和@Autowired注解都是用来实现依赖注入的,可以对成员变量(两者如果都写在字段上,那么就不需要再写setter方法)、方法和构造函数进行标注,来完成自动装配的工作,实现bean的注入

2. 不同点

  1. 来源不同
  • @Autowired是由Spring提供,类名为org.springframework.beans.factory.annotation.Autowired
  • @Resource是由J2EE提供,类名为javax.annotation.Resource
  1. 注入方式
  • @AutoWried按by type自动注入,当接口的实现类有多个时,可以使用@Qualifier("className")注解,指定要注入的实现类
public class UserServiceImpl implements UserService {
   @Autowired // 从spring容器中获取返回类型为UserDao的实现类(默认byType获取),注入到该属性中,
   @Qualifier("userDaoTest") // 指定注入bean的名称
   private UserDao userDao;
}
  • @Resource默认按 byName自动注入,但是@Resource还提供了nametype 2个属性,可以自定义自己想要的。
    • 若不指定属性,默认按byName匹配注入;若按byName找不到,则继续自动按byType来找
    • 若指定了name属性,则按byName匹配注入,找不到则抛出异常
    • 若指定了type属性,则按byType匹配注入,找不到则抛出异常
    • 若同时指定了name和type,傻逼才这么写
      public class UserServiceImpl implements UserService {
          @Resource
          //@Resource(name="userDaoTest") // 从spring容器中获取名称为UserDaoTest的实现类匹配
          //@Resource(type=UserDaoTest.class) 
          private UserDao userDao;
      }
    

相关文章

网友评论

      本文标题:@Resource 和 @Autowired

      本文链接:https://www.haomeiwen.com/subject/knemiktx.html