Spring自動化組立bean
1.場面
DI(依存注入)はCD(Compect disc)とCDプレイヤー(CDPlayer)で説明します.
CDをCDPlayerに挿入(注入)しないと、CDPlayerはあまり使い道がないので、CD PlayerはCDに依存してこそ使命を果たせると言えます.
トップに戻る
2.アーキテクチャ図
トップに戻る
3.コード
インターフェース:Compect Disc.java
CDPlayer.java
しかし、コンポーネントスキャンはデフォルトでは有効ではありません.Springを明示的に配置して、@Componentの注釈がある種類を探すように命令します.beanを作成していません.下の例では@ComponentScanコメントを使用していますが、この注釈はSpringでコンポーネントスキャンを有効にすることができます.他の構成がない場合、@ComponentScanはデフォルトでは設定と同じパッケージをスキャンします.
CDPlayer Config.java
CDPlayer Test.javaをテストします.
上記のコードには、SpringがCDPlayer beanを作成する際に、このコンストラクタによって実装され、CompactDisc類に設定可能なbeanが入ってくることを示しています.上のコードの中で、SgtPeppersはコンポーネントとして宣言され、Compect Discインターフェースを実現しました.したがって、実際の運転ではSgtPeppersを実用化しています.
DI(依存注入)はCD(Compect disc)とCDプレイヤー(CDPlayer)で説明します.
CDをCDPlayerに挿入(注入)しないと、CDPlayerはあまり使い道がないので、CD PlayerはCDに依存してこそ使命を果たせると言えます.
トップに戻る
2.アーキテクチャ図
トップに戻る
3.コード
インターフェース:Compect Disc.java
package soundsystem;public interface CompactDisc { void play();
}
インターフェース:Media Player.javapackage soundsystem;public interface MediaPlayer { void play();
}
Sgt Peppers.javapackage soundsystem;import org.springframework.stereotype.Component;
@Componentpublic class SgtPeppers implements CompactDisc { private String title = "Sgt. Pepper's Lonely Hearts Club Band";
private String artist = "The Beatles";
@Override public void play() {
System.out.println("Playing " + title + " by " + artist);
}
}
注:Sgt Peppers類には@Component注を使用しています.この簡単な注釈は、このクラスがコンポーネントとして分類されることを示し、このクラスのためにSpringがbeanを作成することを知らせる.CDPlayer.java
import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Component;
@Componentpublic class CDPlayer implements MediaPlayer { private CompactDisc cd;
@Autowired public CDPlayer(CompactDisc cd) { this.cd = cd;
}
@Override public void play() {
cd.play();
}
}
しかし、コンポーネントスキャンはデフォルトでは有効ではありません.Springを明示的に配置して、@Componentの注釈がある種類を探すように命令します.beanを作成していません.下の例では@ComponentScanコメントを使用していますが、この注釈はSpringでコンポーネントスキャンを有効にすることができます.他の構成がない場合、@ComponentScanはデフォルトでは設定と同じパッケージをスキャンします.
CDPlayer Config.java
package soundsystem;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;
@Configuration
@ComponentScanpublic class CDPlayerConfig {
}
CDPlayer Test.javaをテストします.
package soundsystem;import static org.junit.Assert.*;import org.junit.Test;import org.junit.contrib.java.lang.system.StandardOutputStreamLog;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4Cla***unner;
@RunWith(SpringJUnit4Cla***unner.class)
@ContextConfiguration(classes=CDPlayerConfig.class)public class CDPlayerTest {
@Autowired private MediaPlayer player;
@Autowired private CompactDisc cd;
@Test public void cdShouldNotBeNull() {
assertNotNull(cd);
}
@Test public void play() {
player.play();
}
}
自動組立とは、Springが自動的にbean依存を満たす方法であり、依存を満たす過程で、Springアプリケーションのコンテキストで、あるbeanニーズに合致する他のbeanを探している.自動組立を宣言するために、Springの@Autowiredによって注釈します.上記のコードには、SpringがCDPlayer beanを作成する際に、このコンストラクタによって実装され、CompactDisc類に設定可能なbeanが入ってくることを示しています.上のコードの中で、SgtPeppersはコンポーネントとして宣言され、Compect Discインターフェースを実現しました.したがって、実際の運転ではSgtPeppersを実用化しています.