この記事では、
SpringコンテナにBeanを登録して、依存性注入する方法について、紹介します。
@Configurationと@Beanを使用して、SpringコンテナにBeanを登録します。
(設定は、XMLファイルではなく、Javaベース)
・Windows10 64bit
・Eclipse 2018-12(Eclipse 4.10)
・Java 8
・Spring Boot 2.1.3(Spring Tool Suite 4)
※下記の記事で構築した開発環境を利用(注:今回、Spring Boot プロジェクトは「Web」を使用します)
Spring Tool Suite 4の開発環境構築(Eclipseにインストール)|STS4
SpringコンテナにBeanを登録して、依存性注入する方法について、紹介します。
@Configurationと@Beanを使用して、SpringコンテナにBeanを登録します。
(設定は、XMLファイルではなく、Javaベース)
動作環境
・Windows10 64bit
・Eclipse 2018-12(Eclipse 4.10)
・Java 8
・Spring Boot 2.1.3(Spring Tool Suite 4)
※下記の記事で構築した開発環境を利用(注:今回、Spring Boot プロジェクトは「Web」を使用します)
Spring Tool Suite 4の開発環境構築(Eclipseにインストール)|STS4
@Beanとは
@Beanを利用して、Springコンテナで管理されるBeanを生成します。
@Configurationクラス内のメソッドに@Beanを付与して、@Beanメソッドを宣言します。@Beanメソッドで、Beanのインスタンスを生成して、これを戻り値として返すと、このインスタンスがSpringコンテナに登録されます。
Springコンテナで管理されているBeanは、任意のクラスで@Autowiredまたは@Injectを付与したフィールドに代入することができます。
* 通常、@Beanは、@Configurationクラス内のメソッドに付与します。
* @Beanの属性は、Spring XMLスキーマの<bean/>要素と同様のものです。
@Configurationとは
通常、@Beanメソッドを宣言するクラスには@Configurationを付与します。
@Configurationクラスは、実行時に、Bean定義、サービス要求の生成のために、Springコンテナによって処理されます。
@Configurationには、メタアノテーションと@Componentが付与されています。そのため、@Configurationクラスは、コンポーネントスキャンの対象となり、@Componentのように@Autowired/@Injectを利用することもできます。
SpringコンテナにBeanを登録して、依存性注入
Springコンテナに登録するBean
Beanクラス
DemoBean.java
・ソースコード
package com.example.demo; public class DemoBean { public String getHelloDemoBean() { return "Hello DemoBean!"; } }
getHelloDemoBeanメソッド
パラメータ
なし
戻り値
文字列(Hello DemoBean!)
設定ファイル(Javaベース)
・@Configurationクラス
DemoConfig.java
* DemoConfigクラスに@Configurationを付与
・ソースコード
package com.example.demo; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class DemoConfig { @Bean public DemoBean getDemoBean() { return new DemoBean(); } }
getDemoBeanメソッドに@Beanを付与して、@Beanメソッドを宣言します。
getDemoBeanメソッド(@Beanメソッド)
パラメータ
なし
戻り値
Springコンテナに登録するインスタンス(DemoBean)
DemoBeanのインスタンスを生成して返します。DemoBeanのインスタンスがSpringコンテナに登録されます。
コントローラ(Controller)
・コントローラクラス
DemoController.java
・ソースコード
package com.example.demo; import org.springframework.web.bind.annotation.RestController; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.beans.factory.annotation.Autowired; @RestController public class DemoController { @Autowired private DemoBean demoBean; @GetMapping("/") public String index() { return demoBean.getHelloDemoBean(); } }
フィールドdemoBean
@Autowiredを付与して、Springコンテナで管理されているBean(DemoBeanのインスタンス)をフィールドdemoBeanに代入します。
indexメソッド
パラメータ
なし
戻り値
画面に表示する文字列
ブラウザで「http://localhost:8080/」にアクセスすると、このメソッドが実行されます。
DemoBeanクラスのgetHelloDemoBeanメソッドの実行結果(文字列「Hello DemoBean!」)を返し、この文字列が画面に表示されます。
アノテーションについて
@RestController:コントローラクラスに付与するアノテーション
@GetMapping:メソッドとGETリクエストURLを紐付けるアノテーション
動作確認
Spring Boot アプリケーション起動後、ブラウザで「http://localhost:8080/」にアクセスすると、画面に「Hello DemoBean!」が表示されます。
DemoBeanクラスのインスタンスがSpringコンテナに登録され、依存性注入ができていることが確認できます。
スポンサーリンク
0 件のコメント :
コメントを投稿