javascript
java resource注解,Spring依赖注入—@Resource注解使用
1.@Autowired默認(rèn)按類型裝配(這個(gè)注解是屬業(yè)spring的),默認(rèn)情況下必須要求依賴對(duì)象必須存在,如果要允許null 值,可以設(shè)置它的required屬性為false,如:@Autowired(required=false) ,如果我們想使用名稱裝配可以結(jié)合@Qualifier注解進(jìn)行使用,如下:
@Autowired()
@Qualifier("baseDao")
private BaseDao baseDao;
2.@Resource(這個(gè)注解屬于J2EE的),分為以下幾種情況
1)默認(rèn)安照名稱進(jìn)行裝配,名稱可以通過name屬性進(jìn)行指定
如:
1 @Resource(name="student") //這里的student是指bean的ID2 private Student student;
2)如果沒有指定name屬性,當(dāng)注解寫在字段上時(shí),默認(rèn)取字段名進(jìn)行按照名稱查找
如:
@Resource() //未指定name,默認(rèn)取將要注入屬性的字段名,如下Student是類類型,student是屬性名也就是字段名
private Student student;
3)如果注解寫在setter方法上默認(rèn)取屬性名進(jìn)行裝配。
如:
@Resource(name="student")
public void setStudent(Student student) {
this.student = student;
}
4)當(dāng)找不到與名稱匹配的bean時(shí)才按照類型進(jìn)行裝配。
如:
java代碼如下:
@Resource()
private Student student;
spring.xml如下:
在Spring.xml文件中并沒有student? 的bean。當(dāng)找不到與名稱匹配的bean時(shí)才按照類型進(jìn)行裝配。我們運(yùn)行也會(huì)成功。
但是需要注意的是,如果name屬性一旦指定,就只會(huì)按照名稱進(jìn)行裝配。否則會(huì)報(bào)錯(cuò)
運(yùn)行結(jié)果如下:
spring.xml如下:
java代碼如下:
運(yùn)行結(jié)果:
總結(jié):
1.@Resource注解既可以用在setter中也可以用在屬性當(dāng)中,當(dāng)Resource指定屬性name名字時(shí),就只會(huì)按照指定的name去查找bean,否則會(huì)報(bào)錯(cuò)。
2.當(dāng)注解寫在字段上時(shí),@Resource不指定name,默認(rèn)取字段名進(jìn)行按照名稱查找,如果注解寫在setter方法上默認(rèn)取屬性名進(jìn)行裝配。如果最后都找不到與名稱匹配的bean時(shí)才按照類型進(jìn)行裝配。我們運(yùn)行也會(huì)成功
3.推薦使用:@Resource注解在字段上,且這個(gè)注解是屬于J2EE的,減少了與spring的耦合。最重要的這樣代碼看起就比較優(yōu)雅。
總結(jié)
以上是生活随笔為你收集整理的java resource注解,Spring依赖注入—@Resource注解使用的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据清洗之 数据整理
- 下一篇: Spring ClassPathReso