Spring 梳理 - @Autowired VS @Resource

  1. Autowired
    1. @Autowired顾名思义,就是自动装配,其作用是为了消除代码Java代码里面的getter/setter与bean属性中的property。当然,getter看个人需求,如果私有属性需要对外提供的话,应当予以保留。

    2.  

      这里@Autowired注解的意思就是,当Spring发现@Autowired注解时,将自动在代码上下文中找到和其匹配(默认是类型匹配)的Bean,并自动注入到相应的地方去。

    3. @Autowired(required = false)
    4. public class TestServiceImpl {
          // 下面两种@Autowired只要使用一种即可
          @Autowired
          private UserDao userDao; // 用于字段上
          
          @Autowired
          public void setUserDao(UserDao userDao) { // 用于属性的方法上
              this.userDao = userDao;
          }
      }

       

    5. @Autowired接口注入
      1. 接口有两个实现类,Spring并不知道应当引用哪个实现类。这种情况通常解决办法:
      2. 使用@Qualifier注解,注意@Qualifier注解Car接口实现类的类名,不是bean的名称
      3.     @Autowired
            @Qualifier("BMW")
            private Car car;

         

  2. @Resource
    1. @Resource 与 @Autowired功能相似
    2. 默认通过name属性去匹配bean,找不到再按type去匹配
    3. 可以指定name或者type
      1.     @Resource(name = "xxx")
            private Yyy  y1;
            
            @Resource(type = Yyy.class)
            private Yyy y2;

         

  3. @Resource  VS  @Autowired
    1. 、@Autowired是Spring的注解,@Resource是J2EE的注解

posted on 2018-12-31 09:49  手握太阳  阅读(296)  评论(0编辑  收藏  举报

导航