|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 必須 | オプション | 詳細: 要素 | |||||||||
@Target(value=METHOD) @Retention(value=RUNTIME) public @interface Delegate
委譲を示します。
このアノテーションが注釈されるメソッドは、 Daoインタフェースのメンバでなければいけません。
to 要素に指定されたクラスのインスタンスは、注釈されたメソッドが実行されるたびにインスタンス化されます。
インスタンス化後、注釈されたメソッドと同じシグニチャのメソッドが実行されます。
to 要素に指定されるクラスは次の制約を満たさなければいけません。
Config 型の1つのパラメータ、もしくはConfig
型と呼び出し元のDaoインタフェースの2つのパラメータを受け取る public なコンストラクタをもつ。
@Dao(config = AppConfig.class)
public interface EmployeeDao {
@Delegate(to = EmployeeDaoDelegate.class)
int execute(Employee employee);
}
コンストラクタのパラメータがConfig 型
public class EmployeeDaoDelegate {
private final Config config;
public EmployeeDaoDelegate(Config config) {
this.config = config;
}
public int execute(Employee employee) {
...
}
}
コンストラクタのパラメータがConfig 型とDaoインタフェース
public class EmployeeDaoDelegate {
private final Config config;
private final EmployeeDao dao;
public EmployeeDaoDelegate(Config config, EmployeeDao dao) {
this.config = config;
this.dao = dao;
}
public int execute(Employee employee) {
...
}
}
| 必須要素の概要 | |
|---|---|
Class<?> |
to
委譲先のクラスです。 |
| 要素の詳細 |
|---|
public abstract Class<?> to
指定できるクラスには制約があります。
|
||||||||||
| 前のクラス 次のクラス | フレームあり フレームなし | |||||||||
| 概要: 必須 | オプション | 詳細: 要素 | |||||||||