概要
Java6から導入された Pluggable Annotation Processing API (JSR 269) を利用すると、ソースコードの自動生成や検証をコンパイル時に行うことができます。
DomaではこのAPIを利用し、@Entityや@Daoと言ったアノテーションが注釈されたインタフェースの実装クラスを自動で作成します。 また、注釈されたインタフェースの検証を行い、Domaの規約に従っていないソースコードがある場合は エラーメッセージをIDE(Eclipseなど)のエディタやjavacを実行したコンソール上に表示します。
オプション
注釈処理にはオプションを与えることができます。 Domaで定義しているオプションには次のものがあります。 必要に応じて使用してください。
key | 説明 | デフォルトの値 |
---|---|---|
dao.package | @Daoが注釈されたインタフェースの実装クラスが生成されるパッケージ。 何らかの値を指定した場合、dao.subpackageの指定よりも優先される。 | @Daoが注釈されたインタフェースと同じパッケージ |
dao.subpackage | @Daoが注釈されたインタフェースの実装クラスが生成されるサブパッケージ。 dao.packageに値を指定していない場合にのみ有効。 @Daoが注釈されたインタフェースのパッケージが「example.dao」で、ここに指定した値が「impl」の場合、 生成されるクラスのパッケージは「example.dao.impl」となる。 | |
dao.suffix | @Daoが注釈されたインタフェースの実装クラスの名前のサフィックス。 @Daoが注釈されたインタフェースの単純名が「EmployeeDao」で、ここに指定した値が「Impl」の場合、 生成されるクラスの単純名は「EmployeeDaoImpl」となる。 | _ (アンダースコア) |
debug | 注釈処理のデバッグ情報をログ出力するかどうか。「true」の場合、ログ出力を行う。 | false |
dto.generation | @Entityが注釈されたインタフェースに対応するDTOクラスを生成するかどうか。 出力されるDTOはDomaに依存しないいわゆるPOJOなクラス。「true」の場合生成する。 | false |
dto.package | @Entityが注釈されたインタフェースに対応するDTOクラスが生成されるパッケージ。 何らかの値を指定した場合、dto.subpackageの指定よりも優先される。 dto.generation=trueの場合にのみ有効。 | @Entityが注釈されたインタフェースと同じパッケージ |
dto.subpackage | @Entityが注釈されたインタフェースに対応するDTOクラスが生成されるサブパッケージ。 dto.packageに値を指定していない場合かつdto.generation=trueの場合にのみ有効。 @Entityが注釈されたインタフェースのパッケージが「example.entity」で、ここに指定した値が「dto」の場合、 生成されるクラスのパッケージは「example.entity.dto」となる。 | |
dto.suffix | @Entityが注釈されたインタフェースに対応するDTOクラスの名前のサフィックス。 dto.generation=trueの場合にのみ有効。 @Entityが注釈されたインタフェースの単純名が「Employee」で、ここに指定した値が「TransferObject」の場合、 生成されるクラスの単純名は「EmployeeTransferObject」となる。 | Dto |
entity.package | @Entityが注釈されたインタフェースの実装クラスが生成されるパッケージ。 何らかの値を指定した場合、entity.subpackageの指定よりも優先される。 | @Entityが注釈されたインタフェースと同じパッケージ |
entity.subpackage | @Entityが注釈されたインタフェースの実装クラスが生成されるサブパッケージ。 entity.packageに値を指定していない場合にのみ有効。 @Entityが注釈されたインタフェースのパッケージが「example.entity」で、ここに指定した値が「impl」の場合、 生成されるクラスのパッケージは「example.entity.impl」となる。 | |
entity.suffix | @Entityが注釈されたインタフェースの実装クラスの名前のサフィックス。 @Entityが注釈されたインタフェースの単純名が「Employee」で、ここに指定した値が「Impl」の場合、 生成されるクラスの単純名は「EmployeeImpl」となる。 | _ (アンダースコア) |
Eclipseでのオプション指定
Ecipseでは、プロジェクトのプロパティの「Annotation Processing」の項目でオプションを登録します。

上記の図では、わかりやすさのためにValueを持たないものまで登録していますが、 実際には必要なものだけ問題ありません。
javacでのオプション指定
-Aオプションにより登録します。詳細はjavacのドキュメントを参照してください。
Antでのオプション指定
javacタスクのcompilerargタグのlineパラメータを使用します。
<javac fork="yes" srcdir="src" compiler="javac1.6" classpathref="classpath" destdir="target" debug="on" encoding="UTF-8" > <compilerarg line="-Adto.generation=true -Adto.package=hoge.dto"/> </javac>
Mavenでのオプション指定
maven-compiler-pluginのcompilerArgumentタグを使用します。
<plugin> <artifactId>maven-compiler-plugin</artifactId> <configuration> <source>1.6</source> <target>1.6</target> <encoding>UTF-8</encoding> <compilerArgument>-Adao.subpackage=impl</compilerArgument> </configuration> </plugin>
指定したいオプションが1つの場合は問題ありませんが、複数のオプションはMavenの制限により指定できません。