注釈付きの注釈を使用してメタ注釈を作成できます。たとえば@Transactional
、Springでの次の使用法を検討してください。
/**
* Shortcut and more descriptive "alias" for {@code @Transactional(propagation = Propagation.MANDATORY)}.
*/
@Target({ElementType.METHOD, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Transactional(propagation = Propagation.MANDATORY)
public @interface RequiresExistingTransaction {
}
Springがアノテーションを処理できるようにすると、Springは@Transactional
、それを運ぶクラスとメソッド、@Transactional
またはそれのメタアノテーション(でアノテーションが付けられたアノテーション@Transactional
)を探します。
とにかく、これは注釈付きの注釈を利用する方法の1つの具体的な例にすぎません。それらを使用するのが理にかなっているのは、ほとんどがSpringのようなフレームワークだと思います。