@Autowired註解和@Resource註解的區別?

@Autowired註解和@Resource註解的區別?

答:

@Autowired:是Spring框架中提供的一個註解。採取的是注入策略 是按照類型進行注入。

如:

public class Test{
  
  @Autowired
  private UserDao userDao;
}

但是如果這個時候這個userDao有多個bean值的是,就會造成無法選擇具體注入哪一個類的情況。所以要配合着**@Qualifier** 進行使用。@Qualifier 告訴spring具體去裝配那個對象。

public class Test{
  
  @Autowired
  @Qualifier(name="userDao1")
  private UserDao userDao;
}

@Resource:這個註解是Java提供的,需要jdk1.6以上。默認是按照ByName進行自動注入的。

public class UserService {
  
  @Resource
  private UserDao userDao;
  @Resource(name="studentDao")
  private Student studentDao;
  @Resource(type="teacherDao")
  private TeacherDao teacherDao;
  @Resource(name="manDao",type="manDao")
  private ManDao manDao;
}

1、如果同時指定了name和type,則從Spring上下文中找到唯一匹配的Bean進行裝配。找不到則拋出異常。

2、如果指定了name,則從上下文中查找名稱id,匹配的bean進行裝配。找不到則拋出異常。

3、如果指定了type,則從上下文中找到類似匹配唯一bean進行裝配。找不到或找到多個都會拋出異常。

4、如果既沒有指定name,又沒有指定type,則自動按照byName方式進行裝配。如果沒有匹配則回退爲一個原始類型進行匹配,如果匹配則自動進行裝配。

總結:

Spring屬於第三方的,J2EE是Java自己的東西。使用@Resource可以減少代碼和Spring之間的耦合。

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