Spring 5.3.16でアノテーション@Componentを使ってクラスのコンストラクタを実行する
環境
Spring 5.3.16
Eclipse 2019-12
JavaSE 1.8
1.pom.xmlの配置
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.arkgame.springconstuct</groupId> <artifactId>springcontract</artifactId> <version>0.0.1-SNAPSHOT</version> <dependencies> <!-- https://mvnrepository.com/artifact/org.springframework/spring-context --> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-context</artifactId> <version>5.3.16</version> </dependency> </dependencies> </project>
2.applicationContext.xml設定ファイル
場所:src/main/java/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.study" /> </beans>
3.Userクラスの定義
package com.arkgame.study; import org.springframework.stereotype.Component; @Component public class User { // 名前 public String getUsername() { String strName = "山田 一郎"; return strName; } // 年齢 public int getAge() { int age = 32; return age; } }
4.UserServiceクラスの定義
package com.arkgame.study; import org.springframework.stereotype.Component; //アノテーション@Componentを追加 @Component public class UserService { // Userクラスのインスタンス変数の宣言 private final User user; //UserServiceのコンストラクタ public UserService(User user) { this.user = user; } public String getUser() { return user.getUsername(); } public int getAge() { return user.getAge(); } }
5.動作実行ァイル(UserApp.java)
package com.arkgame.study; import org.springframework.context.support.ClassPathXmlApplicationContext; public class UserApp { // 配置ファイル名 private static final String FILENAME = "applicationContext.xml"; public static void main(String[] args) { // applicationContext.xmlを読み込み ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(FILENAME); // DIコンテナからbean(インスタンス)を取得 UserService userService = context.getBean(UserService.class); System.out.println("名前: " + userService.getUser()); System.out.println("年齢: " + userService.getAge()); context.close(); } }
6.実行結果
名前: 山田 一郎 年齢: 32