Spring 4詳細シリーズ(二)組立Bean


1.Springは3種類のbeanを組み立てる方法を提供します.
Springコンテナは、アプリケーション内のBeanを作成し、DIによってオブジェクト間の関係を調整します.Springは主に3つの主要な組立メカニズムを提供しています.
  • XMLにおける表示構成
  • Javaでの表示構成
  • 暗黙的なBeanの発見メカニズムと自動アセンブリ
  • 2.自動組立Bean
    Springは2つの角度から自動化組立を実現する:
  • コンポーネントスキャン(Spring自動検出アプリケーションのコンテキストに必要な作成Bean)、
  • 自動組立(SpringはBean間の依存を自動的に満たす)
  • コンポーネントスキャンパッケージの構成(コンポーネントスキャン)
  • Javaクラスでコンポーネントスキャン@ComponentScan(「com.test.controller」)
  • を構成
  • XMLプロファイル構成コンポーネントスキャン
  • 検出可能なBeanの作成
    @Component
    public class A{
    
        private boolean abc() {
            System.out.println("  ...");
        }
    
    }
    
    @Component
    public class B{
    
        @Autowired
        private A a;
    
        private boolean bcd() {
            a.abc();
        }
    
    }

    コンポーネントスキャンのBeanの名前と自動構成
    @Configuration
    //          
    //@ComponentScan(basePackages= {"com.b.dao","com.c.dao"})
    //@ComponentScan(basePackageClasses= {A.class,B.class})
    @ComponentScan(basePackages= "com.a.dao")
    public class Spring4Test {
    	
    	//         ,       
    	@Autowired
    	private InsideTest insideTest;
    	@Inject
    	private InsideTest_ insideTest_;
    
    }
    
    /**
     *    :Spring   @Named  @Component       ,          
     *            ,          。
    */
    @Component("insideTest")
    class InsideTest{
    	//            @Component("insideTest")
    }
    @Named("insideTest_")
    class InsideTest_{
    	//            @Named("insideTest_")
    }

    3.JavaコードでBeanを組み立てる
    //      
    @Configuration
    public class Spring4Test {
    	@Bean
    	public AookTest aook(){
    		return new AookTest();
    	}
    	@Bean
    	public BookTest book(){
    		return new BookTest(aook());
    	}
    }
    //    AookTest
    class AookTest{
    	public void month() {
    		System.out.println("    ...");
    	}
    }
    //   BookTest
    class BookTest{
    	private AookTest aookTest;
    	public BookTest(AookTest aook) {
    		this.aookTest = aook;
    	}
    	public void mainTest() {
    		aookTest.month();
    	}
    }
    //   CookTest
    class CookTest{
    	public static void main(String[] args) {
    		AnnotationConfigApplicationContext annot = 
    				new AnnotationConfigApplicationContext(Spring4Test.class);
    		BookTest bean = annot.getBean(BookTest.class);
    		bean.mainTest();
    	}
    }

    4.XMLによるBeanのアセンブリ
    Spring低バージョンでは、XMLでDTDベースの構成方式を採用しており、Spring 4.0コンフィギュレーションのアップグレード後はSchemaベースのコンフィギュレーション方式で、アップグレードは後方互換性がありますが、後者は私たちの第一選択のXMLコンフィギュレーション方式です.基本的なSchemaベースのXML構成テンプレートは次のとおりです.
    
    
    
            
                
            
            
            
    
  • xmlns="http://www.springframework.org/schema/beans「デフォルトネーミングスペース
  • xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance「カスタムネーミングスペース、
  • xsiは略称xsi:schemaLocationはネーミングスペースに対応するschemaファイル
  • である.
    実際のプロジェクトでは、通常、組み合わせて使用します.
    ①暗黙的なBean発見メカニズムとJavaでの組立てを行う②暗黙的なBean発見メカニズムとXML構成を組み合わせる
    Springプロジェクトの構成を容易にする