您好,登錄后才能下訂單哦!
Java程序員自動組件注入的幾種方式你會哪一種?
Java程序員在開發的時候,一般都會遇到組件注入這個問題,回想起當年剛進入Java程序員這個行業的時候也遇到過這樣的問題,那么我們今天就來討論一下組件注入會有哪幾種方式,希望能幫助大家快速攻破這個技術難點。
注入依賴對象可以采用手工裝配或自動裝配,在實際應用中建議使用手工裝配,因為自動裝配會產生未知情況,開發人員無法預見最終的裝配結果。
問題1:@Autowired 、@Inject 、@Resource 的區別
@Autowired
[if !supportLists]· [endif]Spring標準
[if !supportLists]· [endif]按照類型注入(ByType)
[if !supportLists]· [endif]AutowiredAnnotationBeanPostProcessor對其進行處理
[if !supportLists]· [endif]支持屬性、set方法、構造方法注入,可以聯合@Qualifier完成ByName,聯合@Primary解決同類多 Bean沖突(不推薦,除非迫不得已)
[if !supportLists]· [endif]擁有required屬性判定空
[if !supportLists]· [endif]構造函數只能有一個,構造方法注入@Autowire可以不帶
[if !supportLists]· [endif]@Configuration中也可以不帶@Autowire
[if !supportLists]· [endif]推薦set方法、構造方法注入
@Resource
[if !supportLists]· [endif]JSR250標準
[if !supportLists]· [endif]按照名稱注入(ByName)
[if !supportLists]· [endif]CommonAnnotationBeanPostProcessor對其進行處理
[if !supportLists]· [endif]不支持@Qualifier、@Primary
[if !supportLists]· [endif]不支持required屬性判定空
@Inject
[if !supportLists]· [endif]JSR330
[if !supportLists]· [endif]按照名稱注入(ByType)
[if !supportLists]· [endif]支持@Qualifier、@Primary
[if !supportLists]· [endif]不支持required屬性判定空
[if !supportLists]· [endif]需要依賴
<dependency>
<groupId>javax.inject</groupId>
<artifactId>javax.inject</artifactId>
<version>1</version>
</dependency>
問題2:下面代碼有沒有問題?
@Configuration
public class WorkerConfiguration {
@Autowired
Environment environment;
public WorkerConfiguration(){
System.out.println(environment.getProperty("os.name"));
}
@Bean
public Dept dept() {
System.out.println("dept>>>>>>>>>>>>>>>>>>>");
return new Dept();
}
}
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。