11.2.11. デコレータについて
デコレーターは、特定の Java インターフェースからの呼び出しをインターセプトし、そのインターフェースに割り当てられたすべてのセマンティクスを認識します。デコレーターは、何らかの業務をモデル化するのに役に立ちますが、インターセプターの一般性を持ちません。それらは、それが装飾する型を実装し、注釈が付けられた Bean、または抽象クラスですらあります。
@Decorator。CDI アプリケーションでデコレーターを呼び出すには、beans.xml ファイルで指定する必要があります。
例11.20 デコレータの例
@Decorator
public abstract class LargeTransactionDecorator
implements Account {
@Inject @Delegate @Any Account account;
@PersistenceContext EntityManager em;
public void withdraw(BigDecimal amount) {
...
}
public void deposit(BigDecimal amount);
...
}
}
デコレートされたオブジェクトへの参照を取得するために、デコレーターには
@Delegate インジェクションポイントが 1 つ必要になります。