「Spring 5.3.21」アノテーション@Componentでコンストラクタインジェクションを行うサンプル
環境
Spring 5.3.21
Java 17
Eclipse IDE 2022-06 M2 (4.24.0 M2)
操作方法
1.実行ファイル(TestApp.java)
package com.arkgame.study;
import org.springframework.beans.BeansException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestApp {
public static void main(String[] args) {
// applicationContext.xmlを読み込む
try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml")) {
// DIコンテナからbeanインスタンスを取得
User user = context.getBean(User.class);
System.out.println("名前: " + user.getName());
context.close();
} catch (BeansException e) {
e.printStackTrace();
}
}
}
package com.arkgame.study;
import org.springframework.beans.BeansException;
import org.springframework.context.support.ClassPathXmlApplicationContext;
public class TestApp {
public static void main(String[] args) {
// applicationContext.xmlを読み込む
try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml")) {
// DIコンテナからbeanインスタンスを取得
User user = context.getBean(User.class);
System.out.println("名前: " + user.getName());
context.close();
} catch (BeansException e) {
e.printStackTrace();
}
}
}
package com.arkgame.study; import org.springframework.beans.BeansException; import org.springframework.context.support.ClassPathXmlApplicationContext; public class TestApp { public static void main(String[] args) { // applicationContext.xmlを読み込む try (ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml")) { // DIコンテナからbeanインスタンスを取得 User user = context.getBean(User.class); System.out.println("名前: " + user.getName()); context.close(); } catch (BeansException e) { e.printStackTrace(); } } }
2.クラスの定義
2.1 Studentクラスの定義
package com.arkgame.study;
import org.springframework.stereotype.Component;
//Studentクラスの定義
@Component
public class Student {
// 変数ageを返す
public String getName() {
return "山田太郎";
}
}
package com.arkgame.study;
import org.springframework.stereotype.Component;
//Studentクラスの定義
@Component
public class Student {
// 変数ageを返す
public String getName() {
return "山田太郎";
}
}
package com.arkgame.study; import org.springframework.stereotype.Component; //Studentクラスの定義 @Component public class Student { // 変数ageを返す public String getName() { return "山田太郎"; } }
2.2 Userクラスの定義
package com.arkgame.study;
import org.springframework.stereotype.Component;
//Userクラスの定義
@Component
public class User {
// Studentクラスのインスタンス
private final Student stu;
// コンストラクタ
public User(Student stu) {
this.stu = stu;
}
// getName関数を呼び出し
public String getName() {
return stu.getName();
}
}
package com.arkgame.study;
import org.springframework.stereotype.Component;
//Userクラスの定義
@Component
public class User {
// Studentクラスのインスタンス
private final Student stu;
// コンストラクタ
public User(Student stu) {
this.stu = stu;
}
// getName関数を呼び出し
public String getName() {
return stu.getName();
}
}
package com.arkgame.study; import org.springframework.stereotype.Component; //Userクラスの定義 @Component public class User { // Studentクラスのインスタンス private final Student stu; // コンストラクタ public User(Student stu) { this.stu = stu; } // getName関数を呼び出し public String getName() { return stu.getName(); } }
3.pom.xmlに依存関係spring 5.3.21のjarをインストールします
以下の内容を編集します
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.21</version>
</dependency>
</dependencies>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.21</version>
</dependency>
</dependencies>
<dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.21</version> </dependency> </dependencies>
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">
<!-- 指定したパッケージの配下がscanの対象 -->
<context:component-scan base-package="com.arkgame.study"/>
</beans>
<?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">
<!-- 指定したパッケージの配下がscanの対象 -->
<context:component-scan base-package="com.arkgame.study"/>
</beans>
<?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"> <!-- 指定したパッケージの配下がscanの対象 --> <context:component-scan base-package="com.arkgame.study"/> </beans>
5.動作確認
「TestApp.java」を右クリックして実行(R)->「Javaアプリケーション」をクリックします。
「名前: 山田太郎」が表示されます。