Spring MVC 5.3 アノテーション@Componentでコンストラクタを実行するサンプル
環境
Spring 5.3.23
JDK8
Eclipse 4.14.0
構文
@Compnentは、Spring BootでWebのMVCアプリを作成するときに使用する@Controller, @Service, @Repositoryと同様に、
SpringのDIコンテナに管理させて@AutowireなどでDIできるようにしたいクラスにつけます。
書式
@Component
public class クラス名 {処理コード}
操作方法
1.実行ファイル(ArkgameApp.java)
package com.arkgame.test; import org.springframework.context.support.ClassPathXmlApplicationContext; public class ArkgameApp { public static void main(String[] args) { // applicationContext.xmlを読み込み ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml"); // 対象クラスを取得 UserService cft = context.getBean(UserService.class); // getUserメソッドを呼び出す System.out.println("情報: " + cft.getUser()); context.close(); } }
説明
new ClassPathXmlApplicationContext(“applicationContext.xml");
applicationContext.xmlを読み込みます。 クラス名 インスタンス名 =context.getBean(クラス名.class)
2.UserServiceクラスの定義(UserService.java)
package com.arkgame.test; import org.springframework.stereotype.Component; //アノテーション@Componetを追加 @Component public class UserService { // クラスUserのインスタンス User user; /** クラスのコンストラクタ */ public UserService(User user) { this.user = user; } /** * ユーザー情報を取得します。 * * @return */ public String getUser() { // インスタンスuserの関数を呼び出す return user.geUserName(); } }
3.Userクラスの定義(User.java)
package com.arkgame.test; import org.springframework.stereotype.Component; //アノテーション@Componentの追加 @Component public class User { /** * ユーザー名を取得します。 * * @return ユーザー名 */ public String geUserName() { return "テスト 太郎"; } }
Userクラスにアノテーション@Componentを追加します。
4.設定ファイル(applicationContext.xml)
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd"> <!-- component-scanで対象パッケージ名を指定 --> <context:component-scan base-package="com.arkgame.test" /> </beans>
説明
<context:component-scan base-package="パッケージ名" /> component-scanは、指定した配下がscanの対象になります。
5.実行確認
「ArkgameApp.java」を右クリックして「実行」->「Javaアプリケーション」をクリックするとコンソールに「情報: テスト 太郎」と表示されます。