AnnotationConfigApplicationContextばねは、注釈クラスコンフィギュレーションのために利用スプリングのコンテキストで構成されています。
最初の方法:コンストラクタは、1つ以上のクラスを渡します。注釈がクラスすることができ、また、一般的なカテゴリすることができ、入ってくるクラスでは、春のコンテナに含まれます。次のように:
pom.xml
<?xml version = "1.0"エンコード= "UTF-8"?> <プロジェクトのxmlns = "http://maven.apache.org/POM/4.0.0"のxmlnsを:XSI = "のhttp://www.w3 .ORG / 2001 / XMLスキーマ・インスタンス」 のxsi:のschemaLocation = "http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion> 4.0.0 </ modelVersion> <groupIdを> com.edu.spring </ groupIdを> <たartifactId>春</たartifactId> <バージョン> 1.0.0 </バージョン> <名前>春</名前> <! - FIXMEプロジェクトのウェブサイトにそれを変更する- > <URL>のhttp:// www.example.com </ URL> <プロパティ> <プロジェクト。build.sourceEncoding> UTF-8 </project.build.sourceEncoding> <達人。compiler.source> 1.8 </maven.compiler.source> <maven.compiler.target> 1.8 </maven.compiler.target> </プロパティ> <依存性> <依存性> <のgroupId> org.springframework </のgroupId> <たartifactId>ばねコンテキスト</たartifactId> <バージョン> 4.3 .2.RELEASE </バージョン> </依存関係> </依存関係> </プロジェクト>
User.java、Cat.java、Dog.java、UserDao.java、UserService.java、MyConfig.java如下:
パッケージcom.edu.spring。 パブリック クラスユーザー{ } パッケージcom.edu.spring。 パブリック クラス猫{ } パッケージcom.edu.spring。 パブリック クラス犬{ } パッケージcom.edu.spring。 輸入org.springframework.stereotype.Component。 @Component パブリック クラスUserDao { } パッケージcom.edu.spring。 輸入org.springframework.context.annotation.Bean。 輸入org.springframework.stereotype.Service。 @Service パブリック クラスUserServiceの{ @Bean パブリックキャットcreateCat(){ 返す 新しい)(猫。 } } パッケージcom.edu.spring。 輸入org.springframework.context.annotation.Bean。 輸入org.springframework.context.annotation.Configuration。 @Configuration パブリック クラスのMyConfig { @Bean 公共犬createDog(){ 戻り 新しい)(犬。 } }
App.java
パッケージcom.edu.spring。 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; パブリック クラスアプリ { 公共 静的 ボイドメイン(文字列[]引数) { AnnotationConfigApplicationContextコンテキスト = 新しい AnnotationConfigApplicationContext(ユーザクラス、UserDao クラス。、UserServiceのクラス、のMyConfig クラス)。 System.out.println(context.getBean(ユーザー。クラス)); System.out.println(context.getBean(カタログクラス)); System.out.println(context.getBean(犬。クラス)); System.out.println(context.getBean(UserDao。クラス)); System.out.println(context.getBean(UserServiceの。クラス)); System.out.println(context.getBean(のMyConfig。クラス)); context.close(); } }
結果は以下の通りであります:
第二の方法:コンストラクタパッケージ名を渡し、クラスがパッケージ豆の下に作成され、コンテナと春に
App.java、アノテートされていないUser.classは、Beanを作成しません。
パッケージcom.edu.spring。 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; パブリック クラスアプリ { 公共 静的 ボイドメイン(文字列[]引数) { AnnotationConfigApplicationContextコンテキスト = 新しい AnnotationConfigApplicationContext(「com.edu.spring」)。 // するSystem.out.println(context.getBean(User.class)); System.out.println(context.getBean(カタログクラス)); System.out.println(context.getBean(犬。クラス)); System.out.println(context.getBean(UserDao。クラス)); System.out.println(context.getBean(UserServiceの。クラス)); System.out.println(context.getBean(のMyConfig。クラス)); context.close(); } }
結果は以下の通りであります:
第三の方法:除外走査アノテーションパッケージおよびクラスを示す@ComponentScan注釈付きクラスを追加コンストラクタを通過
AnnotationScan.java
パッケージcom.edu.spring。 輸入org.springframework.context.annotation.ComponentScan; 輸入org.springframework.context.annotation.ComponentScan.Filter。 輸入org.springframework.context.annotation.FilterType。 @ComponentScan(basePackagesは = "com.edu.spring" 、 excludeFilters = @フィルタ(タイプ= FilterType.ASSIGNABLE_TYPE、クラス= {のMyConfig。クラス、UserServiceの。クラス})) パブリック クラスAnnotationScan { }
除外以来App.javaコードオフ書かれたクラスは、Beanを作成されていません
パッケージcom.edu.spring。 輸入org.springframework.context.annotation.AnnotationConfigApplicationContext; パブリック クラスアプリ { 公共 静的 ボイドメイン(文字列[]引数) { AnnotationConfigApplicationContextコンテキスト = 新しい AnnotationConfigApplicationContext(AnnotationScan。クラス)。 // するSystem.out.println(context.getBean(User.class)); // するSystem.out.println(context.getBean(Cat.class)); // するSystem.out.println(context.getBean(Dog.class)); System.out.println(context.getBean(UserDao。クラス)); // するSystem.out.println(context.getBean(UserService.class)); // するSystem.out.println(context.getBean(MyConfig.class)); context.close(); } }
結果は以下の通りであります: