Injection for the Java EE platform) CDI 1.1/1.2 (JSR 346: Contexts and Dependency Injection for the Java EE platform) CDI 2.0 (JSR 365: Contexts and Dependency Injection for the Java EE platform) CDI 3.0 (Jakarta Contexts and Dependency Injection) CDI 2.0 (Jakarta Contexts and Dependency Injection) CDI 4.0 (Jakarta Contexts and Dependency Injection) Java EE 8 Java EE 7 Java EE 6 Jakarta EE 8 Jakarta EE 9 Jakarta EE 10
Injection for the Java EE platform) CDI 1.1/1.2 (JSR 346: Contexts and Dependency Injection for the Java EE platform) Java EE 7 Java EE 6 Java EEへの Dependency Injection機能の取り込み Bean Discovery Modeの改善や各種仕様の明確化など CDIの基本機能の完成
for the Java EE platform) CDI 3.0 (Jakarta Contexts and Dependency Injection) CDI 2.0 (Jakarta Contexts and Dependency Injection) CDI 4.0 (Jakarta Contexts and Dependency Injection) Java EE 8 Jakarta EE 8 Jakarta EE 9 Jakarta EE 10 Java SE環境での使⽤にあわせて仕様を分割 「Core CDI」「CDI in Java SE」「CDI in Java EE」 javax名前空間からjakarta名前空間への移⾏ Jakarta EE Core Profileの新設にあわせて CDI仕様とCDI lite仕様に分割
javax.enterprise.inject.spi パッケージ n プロデューサー・メソッドの引数に指定すると, CDIコンテナから提供される – 通常のCDI管理Beanでも,InjectionPoint型の変数に @Injectさせることで利⽤可能 – ただし,注⼊先のBeanのスコープは@Dependentでないと いけない n ⽤途の例 34 @Produces Logger createLogger( InjectionPoint injectionPoint ) { return Logger.getLogger( injectionPoint.getMember().getDeclaringClass().getName() ); } ログ出⼒⽤の bean を返す,プロデューサー・メソッドでの利⽤例 public interface InjectionPoint { public Type getType(); public Set<Annotation> getQualifiers(); public Bean<?> getBean(); public Member getMember(); public Annotated getAnnotated(); public boolean isDelegate(); public boolean isTransient(); } InjectionPoint の定義