CDI 1.1 : @Vetoed アノテーション of 1/45

2014年1月29日 at 1:32 午後

昨日、「Java EE 7 の新機能を 45 分で 45 個ご紹介」のエントリを書きましたが、具体的にどのような内容なのか?ご興味ある方もいらっしゃるかと思いますので、セッション内容の一例をご紹介します。

CDI 1.1 : @Vetoed アノテーション

CDI 1.1 から特定のクラスだけをインジェクション対象からはずし、インジェクションできないようにする事ができるようになりました。インジェクション対象からはずすためには、該当のクラスに対して、@Vetoed アノーテションを付加します。

ご参考:CDI 1.0 までは XML で除外対象の設定を行ってました。

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://xmlns.jcp.org/xml/ns/javaee">
    <scan>
        <exclude name="com.acme.rest.*" />

        <exclude name="com.acme.faces.**">
            <if-class-not-available name="javax.faces.context.FacesContext"/>
        </exclude>
    </scan>
</beans>

@Vetoed アノテーションの利用例として、JPA のエンティティ・クラスに対して付加する事が有効です。このアノテーションを JPA のエンティティに付加する事で、CDI のライフサイクルと JPA のライフサイクルの競合を防ぎより安全に実装することができます。下記の例では JPA のエンティティを CDI では管理できないようにし JPA の EntitiManager によってのみ管理する例を示します。

@Entity
@Vetoed
public class Person {

   @Column
   private String fName;

   @Column
   private String lName;
}

もしくは、package-info.java を作成し、該当パッケージに含まれるクラス全てをインジェクション対象から外す事も可能です。

@Vetoed
package com.yoshio3.noninjectable ;

import javax.enterprise.inject.Vetoed ;

このように、本セッションは Java EE 7 で追加された新機能をいち早くご理解されたい方に有用なセッションです。前提としてコンフィグレーションの内容やソースコードを交えての説明ですので Java のコードが理解できる方の参加が必須で、金魚本や過去のセミナーなどから Java EE 5/6 を触った事のある方ならばより理解がしやすいかと想定します。

Entry filed under: 未分類. Tags: .

Java EE 7 の新機能を 45 分で 45 個ご紹介 Java EE 7 の新機能紹介と Java のイベントのご紹介


Java Champion & Evangelist

Translate

ご注意

このエントリは個人の見解であり、所属する会社の公式見解ではありません

カレンダー

2014年1月
 12345
6789101112
13141516171819
20212223242526
2728293031  

カテゴリー

clustermap

ブログ統計情報

  • 1,288,926 hits

Feeds

アーカイブ