1. 程式人生 > >Spring 梳理 - @Autowired VS @Resource

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的註解