春のコンフィギュレーションモードの三種類(006)AnnotationConfigApplicationContext

  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(); 
        
    } 
}
コードの表示

  結果は以下の通りであります:

 

おすすめ

転載: www.cnblogs.com/javasl/p/11783484.html