一分鐘學會spring註解之@Autowired註解(二)

上一遍文章中有簡單的介紹@Autowired註解的使用,沒有查看的同學可以點擊查看,但是那偏文章只介紹了@Autowired註解的一種使用方式,當然也是常用的方式就是@Autowired註解加在成員變量上,今天將介紹另外的幾種使用方式:

  • @Autowired註解加在方法上

  • @Autowired註解加在構造方法上

  • @Autowired註解加在參數上


1,@Autowired註解加在方法上


修改之前的UserService如下在setUserDao方法上加上@Autowired註解:


@Service
public class UserService {
//    @Autowired(required=false)
   private UserDao userDao;
   public UserDao getUserDao() {
       return userDao;
   }
   @Autowired
   public void setUserDao(UserDao userDao) {
       this.userDao = userDao;
   }
   /**
    * 增加一個tostring方法 方便測試
    */

   @Override
   public String toString() {
       return "UserService [userDao=" + userDao + "]";
   }
}


測試代碼如下:


AnnotationConfigApplicationContext applicationContext2 = new AnnotationConfigApplicationContext(MainScanConfig.class);
UserService object = (UserService) applicationContext2.getBean("userService");
System.out.println("實例bean爲 === "+object);


運行我們可以發現userDao同樣成功的注入到了UserService中了


2,@Autowired註解加在構造方法上


我們繼續修改UserService把@Autowired註解加在UserService對應的構造方法上如下:


@Service
public class UserService {
//    @Autowired(required=false)
   private UserDao userDao;
   /**
    * spring 在啓動的時候會調用這個有參構造方法
    * @param userDao
    */

   @Autowired
   public UserService(UserDao userDao){
       this.userDao=userDao;
   }
   /**
    * 增加一個tostring方法 方便測試
    */

   @Override
   public String toString() {
       return "UserService [userDao=" + userDao + "]";
   }
}


運行測試我們可以發現userDao同樣成功的注入到了UserService中


3,@Autowired註解加在參數上


繼續修改以上代碼如下:


@Service
public class UserService {
//    @Autowired(required=false)
   private UserDao userDao;
   /**
    * spring 在啓動的時候會調用這個有參構造方法
    * 如果只有一個有參構造方法則@Autowired註解也可以省略
    * @param userDao
    */

   public UserService(@Autowired UserDao userDao){
       this.userDao=userDao;
   }
   /**
    * 增加一個tostring方法 方便測試
    */

   @Override
   public String toString() {
       return "UserService [userDao=" + userDao + "]";
   }
}


註解與第二種的區別@Autowired加到了對應的參數中,如果就一個有參構造方法,@Autowired註解也可以省略,測試結果可以發現同樣成功注入


雖然後邊這幾種方法我們不常用,但是作爲知識的補充還是有必要的,萬一哪位同學寫了這樣的代碼,我們也不至於看不懂


以上是今天文章的所有內容,歡迎大家吐槽



推薦閱讀


深入理解spring生命週期與BeanPostProcessor的實現原理



更多優質文章請關注以下公衆號查閱:





發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章