日韩精品欧美激情国产一区_中文无码精品一区二区三区在线_岛国毛片AV在线无码不卡_亞洲歐美日韓精品在線_使劲操好爽好粗视频在线播放_日韩一区欧美二区_八戒八戒网影院在线观看神马_亚洲怡红院在线色网_av无码不卡亚洲电影_国产麻豆媒体MDX

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

時(shí)間:2020-03-20 15:57:20 類(lèi)型:JAVA
字號(hào):    

@Autowired

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

@Autowired采取的策略為按照類(lèi)型注入。

public class UserService {
    @Autowired    private UserDao userDao; 
}

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

@Qualifier告訴spring具體去裝配哪個(gè)對(duì)象。

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

這個(gè)時(shí)候我們就可以通過(guò)類(lèi)型和名稱(chēng)定位到我們想注入的對(duì)象。

@Resource

@Resource注解由J2EE提供,需要導(dǎo)入包javax.annotation.Resource。

@Resource默認(rèn)按照ByName自動(dòng)注入。

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; 
}

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

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

③如果指定了type,則從上下文中找到類(lèi)似匹配的唯一bean進(jìn)行裝配,找不到或是找到多個(gè),都會(huì)拋出異常。

④如果既沒(méi)有指定name,又沒(méi)有指定type,則自動(dòng)按照byName方式進(jìn)行裝配;如果沒(méi)有匹配,則回退為一個(gè)原始類(lèi)型進(jìn)行匹配,如果匹配則自動(dòng)裝配


<