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

 

SpringMVC

Posted by arkgame