java shareable_spring中@Resource和@Autowired理解详解_编程语言_IT虾米网
@Resource在bean注入的時(shí)候使用,@Resource所屬包其實(shí)不是spring,而是javax.annotation.Resource,只不過(guò)spring支持該注解
@Resource里有name,lookup,type,authenticationType,shareable,mappedName,description這幾個(gè)屬性
具體看源碼結(jié)構(gòu)截圖
0、可以直接在要注入的屬性上這樣寫(xiě)
@Resource
private User user;
不管配置文件里有沒(méi)有寫(xiě)id或name,都能識(shí)別到,默認(rèn)應(yīng)該是根據(jù)類(lèi)class來(lái)識(shí)別的。
1、name
當(dāng)spring的xml配置文件中的bean配置了name或id時(shí),它都可以識(shí)別到,也就是如果,[email?protected](name="user_id")[email?protected](name="user_name")都可以
2、lookup
3、type
Class type() default java.lang.Object.class;這個(gè)是源碼,默認(rèn)值是Object.class,那就一目了然了,無(wú)需多說(shuō)了
4、authenticationType
AuthenticationType authenticationType() default AuthenticationType.CONTAINER;這個(gè)是源碼,AuthenticationType這是個(gè)枚舉類(lèi),有兩個(gè)屬性CONTAINER,APPLICATION。
暫時(shí)沒(méi)搞懂這倆有啥區(qū)別,有知道的麻煩告知
5、shareable
指示此組件和其他組件之間是否可以共享該資源。這可以指定代表任何支持類(lèi)型的連接工廠的資源,并且不能為其他類(lèi)型的資源指定。它是一個(gè)布爾型,默認(rèn)是true
6、mappedName
7、description
當(dāng)然,spring的注入不光是可以屬性注入,也可以set方法和構(gòu)造函數(shù)注入,也就是說(shuō)
@Resource
public void setUser(User user) {
this.user = user;
}
@Autowired是屬于spring的注解,它所在的包org.springframework.beans.factory.annotation,它是按byType注入的,默認(rèn)是要依賴(lài)的對(duì)象必須存在,看源碼就可以理解,boolean required() default true;可以看到默認(rèn)值是true,如果需要允許依賴(lài)對(duì)象是null,[email?protected](required=false)就可以了。
[email?protected],[email?protected]
@Autowired
@Qualifier("user")
private User user;
總結(jié)
以上是生活随笔為你收集整理的java shareable_spring中@Resource和@Autowired理解详解_编程语言_IT虾米网的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 淤泥管道机器人_丛台区设备管道清洗超高效
- 下一篇: C语言 fopen 函数 - C语言零基