Spring組立Bean---JavaコードによるBeanの組立

3546 ワード

Springの実戦(第4版)ノートを見ます.
Spring組立ビーンBeanには、他のBeanに依存しないシンプルなBeanと、CompactDisc BeaBenと、他のBeanに依存するBeanとがあります.この二つのBeanはSpringにこの二つのオブジェクトをSpringに登録したいということを教えてくれます.
Spring組立ビーム方式の選択:
     自動化組立方式でビーンを組み立てることを推奨しますが、@Componentと@Autowiredの注釈を使って自動組立を実現できない場面があります.例えば、第三者ライブラリの中の部品をあなたのアプリケーションに組み立てる場合、そのクラスに@Componentと@Autowiredの注釈を追加することはできません.そのため、自動化組立案は使えなくなりました.この場合は表示構成を採用しなければなりません.表示構成にはJava設定とxml構成があります.
     JavaConfigの構成がより強力であり、安全で再現に友好的であることを示しています.
     Java ConfigはJavaコードですが、他のJavaコードとは違います.JavaConfigはコンフィギュレーションコードであり、どのような業務ロジックも含まれていないし、業務ロジックのコードに侵入するべきではない.通常はJavaConfigを別々のカバンに入れて、アプリケーションの論理と分離させます.
1.JavaConfigを通じてBeanを宣言する  ---宣言は他のBeanに依存しないシンプルなBeanです.
     自動組立ビーンの自動スキャンの代わりに(@Controller@Service@Repository @Componentコメントと@ComponentScan )
     配置の種類の中で一つのpublic方法を声明します. そして@Beanで注解します.
     この方法の方法名はビーンIdであり、方法体は所望のタイプのインスタンスを作成して返します.この方法はSpringアプリケーションのコンテキストにあるビーンとして登録する対象を返すということを、@Bean注解は教えてくれます.
     beanにIdを指定する @Bean注釈を使用できるname属性 @Bean(name=「compctDiscId」)
     コードの例は以下の通りです 
public class CompactDisc {
	
	private String artist = "dream_s";
	private String music = "litter bird";
	public void play() {
	   System.out.println("JAVA CONFIG   playing  "+ music + "  by  "+ artist);
	}
}
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDPlayerConfig {
	@Bean
	public CompactDisc compactDisc() {
		return new CompactDisc();
	}	
}
2.Java Configによる注入の実現――Java Config声明による他のBean依存Bean――構成クラスでBeanを宣言する際に注入を実現する
     自動組立中の@Autowiredの代わりに注釈します. 
     例えば、CDPlayer BeanはCompactDisc Beanに依存する必要があります.構成クラスでCDPlayer Beanを宣言するには、2つの書き方があります.
      JavaConfigでbeanを組み立てる一番簡単な方法はCompctDisc beanを作成する方法を引用するか、またはComppactDiscをパラメータとして要求することです.
      二番目のように勧めます. CompactDisc Beanを同一の構成クラスに宣言することは要求されません.CompactDiscを必要とする声明もなく、JavaConfigで宣言することもできます.また、コンポーネントスキャン機能によって自動的に発見されたり、XMLで構成されたりすることもできます.
public class CDPlayer {

    //        DI  
    private CompactDisc compactDisc;   
	
    public CDPlayer(CompactDisc compactDisc) {
		this.compactDisc = compactDisc;
	}
	
    public  void  play() {
		compactDisc.play();		
	}
}
     コンフィギュレーションクラスでは、CDPlayer Beanコードを以下の通り宣言します. 
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
public class CDPlayerConfig {
	@Bean
	public CompactDisc compactDisc() {
		return new CompactDisc();
	}
	//    bean   
	@Bean
	public CDPlayer cdPlayer(){
		return new CDPlayer(compactDisc());
	}
 	//   cdPlayer()      CompactDisc    
	@Bean
	public CDPlayer cdPlayer(CompactDisc compactDisc){
		return new CDPlayer(compactDisc);
	}
	
}
3.JavaConfig組立Beanをテストする
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)
public class CDPlayerTest {  

	@Autowired
	 private CDPlayer cdPlayer;  //    Bean  Bean 
	@Autowired
	 private CompactDisc compactDisc;  //     Bean   Bean
	
	@Test
	public void testPlayer(){
		compactDisc.play();
		cdPlayer.play();
	}
}
コンソール入力2行:JAVA CONFIG  playing litter bird by dreamus