JSR330 @Inject的一些記錄

爲了統一各類依賴注入框架的編程模型,JCP發佈了Java依賴注入規範——JSR330 ,@Inject,這是一種通用的注入模型,Spring3.,Guice,Picocotainer都支持JSR330java

@Inject是JSR330的核心,該註解幾乎徹底能夠替換Spring的@Autorwired編程

可是使用上有些不一樣:框架

@Inject沒有required屬性,註解中標註的依賴關係必須存在,否則則拋出異常ide

並且除了@Inject,JSR330還有另外一種技巧:注入一個Provider。Provider接口能夠實現Bean引用的延遲注入以及注入Bean的多個實例等功能,在調用provider的get()方法以前,實際的對象並無注入。ui

限定@Inject所標註的屬性 對於@Autowired來講,有@Qualifier來限定。而對於@Inject來講,有@Named來限定code

這兩個限定的關鍵區別在語義層面上。 @Qualifier幫助咱們縮小所匹配的Bean的範圍。默認使用Bean的ID @Named經過Bean的ID來標識可選的Bean對象

一樣的,JSR330也能夠自定義Qualifier,並且不像Spring的不建議使用。JSR330鼓勵咱們建立自定義的限定器註解:接口

<!-- lang: java -->
@Target({ElementType.FIELD,ElementType.PARAMETER,ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Qualifier
public @interface sudojs(){
}
相關文章
相關標籤/搜索