程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> J2EE >> Java EE 6簡化開發總結:注解支持與Profile(2)

Java EE 6簡化開發總結:注解支持與Profile(2)

編輯:J2EE

標准化的依賴注入注解

依賴注入是開發企業Java應用程序的一種流行技術,在依賴注入中,也叫做反轉控制,一個組件指定它依賴的資源,一個注入器通常是一個容器,它為組件提供資源,雖然依賴注入有多種實現方式,但許多開發人員習慣使用注解來實現它。依賴注入在Java開發框架中得到了廣泛使用,如Spring和Guice。遺憾的是,之前還沒有基於注解構建依賴注入的標准方法,特別需要注意的是,Sping框架采用的基於注解的依賴注入方法與Guice采用的方法不一樣。

隨著Java EE 6的發布,這個問題得到了解決,隨Java EE 6發布的JSR 330:Java依賴注入改變了這種境況,這個規范的目標是為依賴注入提供一個標准的,可擴展的API。

API由一套用在可注入類上的注解組成,這些注解包括:

@Inject:標識可注入的構造器,方法和字段;

@QualifIEr:標識合法的注解,合法的是強類型鍵,它可以幫助區分相同類型的對象不同使用方法。例如,@Red Car和@Blue Car可以理解為相同類型的不同實例,在這個例子中,@Red和@Blue是合法的;

@Scope:標識注解范圍;

@Singleton:標識注入器只實例化一次的類型。

例如,下面的類Stopwatch使用@Inject注解在TimeSource類上注入一個依賴;

  1. class Stopwatch {
  2. final TimeSource timeSource;
  3. @Inject Stopwatch(TimeSource TimeSource) {
  4. this.TimeSource = TimeSource;
  5. }
  6. void start() { ... }
  7. long stop() { ... }
  8. }

依賴注入可以通過其它注入進行擴展,例如,假設你想創建一個StopwatchWidget類,它在Stopwatch類上有一個依賴,那麼你可以象下面這樣定義這個類:

  1. class StopwatchWidget {
  2. @Inject StopwatchWidget(Stopwatch sw) { ... }
  3. ...
  4. }

  • Java EE 6新特性之Servlet 3.0的異步處理
  • 在Java EE 6中使用JSF 2.0簡化頁面制作
  • EJB 3.1五大模式改進令Java EE 6更好用
  • Java EE 6引入的JPA 2.0四大新特性詳解
  • Hibernate之父建議開發者升級到Java EE 6
在響應中,注入器發現一個TimeSource對象,使用TimeSource對象構造一個Stopwatch對象,然後再使用Stopwatch對象構造一個StopwatchWidget對象。

JSR 330制定的標准化注解使可注入類可以跨框架遷移,你不用再為特定廠商的注解忙碌了。

注意在JSR 330上構建的CDI和向依賴注入增加的新功能,包括自動發現,可注入類的配置,在運行時定義新的可注入類的API,幫助與第三方框架集成。(51CTO編輯注:針對Java EE 6當中的JSR 330依賴注入,JCP成員們當中是存在一些爭議的,具體可參考這篇JSR 330通過時各方爭議的總結文章

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved