@import与ImportSelector

免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
このリンク: https://blog.csdn.net/HCY_1992/article/details/102772377

@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 {
}

おすすめ

転載: blog.csdn.net/HCY_1992/article/details/102772377