美文网首页
@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