springboot における import アノテーションの役割

1.  3 パーティ Bean の導入: SpringBoot が Bean をスキャンするとき、デフォルトでは、すべての同じレベルおよびサブレベルのパッケージがスキャンされます。したがって、場合によっては、外部 Bean を使用したい場合 (スリーパーティ パッケージなど)、@SpringBootApplication の scanBasePackages の値を渡すことができますが、実際には特定の Bean のみをインポートしたい場合は、次を使用できます。 @Import をご紹介します。たとえば、Hutool には SpringUtil クラスがあり、その機能は実際には使い慣れた SpringContextUtil と同じですが、@EnableSpringUtil を宣言しないと、Spring はこの SpringUtil をスキャンできず、配置しません。 Spring コンテナに、applicationContext を注入することはできません。

2. スイッチとして: 実際、Springboot を使用する場合、@EnableDiscoveryClient、@EnableCaching、@EnableAsync などのアノテーションに気付くかもしれません。それらの機能は、スイッチの役割を果たすことです。つまり、それらを使用してopen 対応する関数, それらはどのように実装されていますか? 実際には @Import(xxx) がその中で宣言されています. それがインポートされている限り、通常、インポートされるのは xxxselector クラスです (クラス名は必須のセレクターの終わりではありません. )、それらの役割は、サービスの検出、キャッシュの有効化、@Async アノテーションの有効化など、対応する機能を完了することです(実際、これは完全ではありませんが、対応する機能は有効になっています)。(@EnableAsync が宣言されていない場合、@Async だけを使用しても効果がなく、他も同様です)

おすすめ

転載: blog.csdn.net/listeningdu/article/details/128785927