@import与ImportSelector
なぜあなたは唯一のソースコードに@EnableTransactionManagementオープンノートトランザクション、ポイントを追加する必要があり、重要なコメントを見つけたん@import
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(TransactionManagementConfigurationSelector.class)
public @interface EnableTransactionManagement {
@importとパラメータ内のノートを観察し続け、そして最終的にこのインタフェースなどImportSelectorを発見した
インタフェースのドキュメントでは、インタフェースの実装クラスはEnvironmentAwareを達成しながら場合は、その主な役割は、コンフィギュレーション・クラスをインポートする必要が集めることで、はっきりと言いますDeferredImportSelectorインターフェイスを導入するときに、すべてで処理し、所望の@Configurationを達成することができるならば呼び出し方法は、上記に対応するインターフェイスメソッドを呼び出す前に、BeanFactoryAware、BeanClassLoaderAwareまたはResourceLoaderAwareは、それはselectImports。
上記によると、私たちは、コンフィギュレーションノートをカスタマイズすることができます
まず、配列の中に注入されるように、ImportSelectorを実装するクラス独自のImportSelectorを定義したクラス名を追加
public class MyImportSelector implements ImportSelector{
@Override
public String[] selectImports(AnnotationMetadata importingClassMetadata) {
return new String[]{ImportSelectorDao.class.getName()};
}
}
ImportSelectorDaoは、DAOは、任意の定義を所有している重要ではありません
スイッチのようにカスタム注釈
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Import(MyImportSelector.class)
public @interface HcyImport {
}
私たちは、クラスを注入する必要がある場合には直接のコメントは削除できない場合、我々は、コンフィギュレーションに切り離さコードをこのノートを追加することができます。
私たちは、クラスを設定するには、注釈を追加するために必要なときに最後に、することができます。
@Configuration
@ComponentScan("com.hcy")
@HcyImport
public class AppConfig {
}