春・コンテキストの注釈パケットによって@import
パッケージorg.springframework.context.annotation。 輸入java.lang.annotation.Documented; 輸入java.lang.annotation.ElementType。 輸入java.lang.annotation.Retention。 輸入java.lang.annotation.RetentionPolicy。 輸入java.lang.annotation.Target; @Target({ElementType.TYPE}) @Retention(RetentionPolicy.RUNTIME) @Documented パブリック @のインタフェースインポート{ クラス <?> []の値(); }
アノテーションは主にクラス構成(コンフィギュレーション)をインポートするために使用され、通常、我々はすべての@SpringBootApplicationスキャン可能な範囲内で、プロファイルを作成し、この構成のビジネスでその時間を使用し、直接注入は、通常@Autowired使用することができます。
上に示したように、我々はオーダーの直接注入を使用する場合、それは、問題ではありません設定OrderConfigクラス以来、開始のメインクラスデフォルトのスキャン範囲を。
@SpringBootApplicationのデフォルトのスキャン範囲、プログラムは現在のクラスのスキャンを開始すると、プライマリパッケージ、パッケージおよびすべてのサブパケットの現在のです。あなたは、親のパッケージ構成、パッケージパススキャンの注釈を示すために、起動クラス@ComponentScan(「COM。**」)を使用する必要性をスキャンする必要がある場合。
次のようにクラスは、パケットタイプ、および次のサブパケットメインパス構成にない場合。
UserConfigにに直接注入この場合、プログラムは起動時にエラーになります
com.example.security.securitydemo.SecurityDemoApplicationでのフィールドのユーザーがタイプ「com.example.security.securitydemo.bean.User」の豆必要見つかりませんでした。 注入点は、次の注釈があります: - org.springframework.beans.factory.annotation.Autowired @(=必要な真)
ソリューション
- 起動クラスプラスに @ComponentScan(「COM。**」)のノート、直接取得
- 使用@import(UserConfig.classは)の導入を指摘します
シンプルかつ粗製の方法は、直接問題に対処する、しかし、この解決策は、それだけであなたはそれがパッケージ名は、恥ずかしいであれば、COM、組織で始まる、クラスのパッケージ名を知っている合って、これに基づいて、それがあります@importを拡張します。
<インポート/>タグ、2でない差を使用して、元のバネXMLに相当@import。