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」)
コードの例は以下の通りです
自動組立中の@Autowiredの代わりに注釈します.
例えば、CDPlayer BeanはCompactDisc Beanに依存する必要があります.構成クラスでCDPlayer Beanを宣言するには、2つの書き方があります.
JavaConfigでbeanを組み立てる一番簡単な方法はCompctDisc beanを作成する方法を引用するか、またはComppactDiscをパラメータとして要求することです.
二番目のように勧めます. CompactDisc Beanを同一の構成クラスに宣言することは要求されません.CompactDiscを必要とする声明もなく、JavaConfigで宣言することもできます.また、コンポーネントスキャン機能によって自動的に発見されたり、XMLで構成されたりすることもできます.
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