亚洲色蝴蝶中文娱乐网,在线亚洲欧美一区二区中文字幕,无人视频在线观看视频高清视频,99午夜国产精品一区二区,人人妻人人爽人人狠狠

@Autowired注解與@resource注解的區(qū)別

時間:2020-03-20 15:57:20 類型:JAVA
字號:    

@Autowired

@Autowired為Spring提供的注解,需要導入包org.springframework.beans.factory.annotation.Autowired。

@Autowired采取的策略為按照類型注入。

public class UserService {
    @Autowired    private UserDao userDao; 
}

如上代碼所示,這樣裝配回去spring容器中找到類型為UserDao的類,然后將其注入進來。這樣會產(chǎn)生一個問題,當一個類型有多個bean值的時候,會造成無法選擇具體注入哪一個的情況,這個時候我們需要配合著@Qualifier使用。

@Qualifier告訴spring具體去裝配哪個對象。

public class UserService {
    @Autowired
    @Qualifier("userDao1")    
    private UserDao userDao; 
}

這個時候我們就可以通過類型和名稱定位到我們想注入的對象。

@Resource

@Resource注解由J2EE提供,需要導入包javax.annotation.Resource。

@Resource默認按照ByName自動注入。

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

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

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

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

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


<