トッカンソフトウェア

SpringBoot 設定

今回は設定をやります。前回の続きからやるので、環境設定等は前回を参照下さい。



component-scan

アノテーションで書いたように、Springはcomponent-scanで設定したパッケージ以下にあるアノテーションが付いているクラスを読み込みます。
(前回のようにmainメソッド配下のパッケージも読み込みます)

Springでは設定ファイルでcomponent-scanを指定して該当クラスを読み込ませていましたが、SpringBootでは@ComponentScanアノテーションを使用するか、 @SpringBootApplicationで指定します。

DemoApplication .java
				
package com.example.demo;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.ComponentScan;

@ComponentScan("spring.test")
@SpringBootApplication
public class DemoApplication {

	public static void main(String[] args) {
		SpringApplication.run(DemoApplication.class, args);
	}

}
			
TestController.java
				
package spring.test;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {

	@RequestMapping(value = "/", method = GET)
	public String show() {
		return "test";
	}
}


			

外部設定値の読み込み

次に外部にある設定ファイルの設定値を読み込んでみます。今回は、@Valueアノテーションを使って直接設定ファイルを読み込む方式と @ConfigurationPropertiesアノテーションを使って設定ファイルとクラスに紐付ける方式をやります。

TestController.java
				
package spring.test;

import static org.springframework.web.bind.annotation.RequestMethod.GET;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class TestController {

	@Autowired
	TestConfig testConfig;

	@Value("${test.hello:DEFAULT}")
	String str;

	@RequestMapping(value = "/", method = GET)
	public String show() {

		// worldが出力される
		System.out.println(testConfig.getHello());

		// こっちもworldが出力される
		System.out.println(str);

		return "test";
	}
}


			
TestConfig.java
				
package spring.test;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties("test")
public class TestConfig {
	private String hello;

	public String getHello() {
		return hello;
	}

	public void setHello(String hello) {
		this.hello = hello;
	}
}


			
application.properties
				
test.hello=world


			
@Valueアノテーションは @Value("${設定項目名:デフォルト値}") のように記述します。
@ConfigurationPropertiesアノテーションは @ConfigurationProperties("設定項目名の頭") のように記述し、 クラス内の変数名(setterが必要)に項目名をつけます。

ファイル構成は以下のようになります。


ページのトップへ戻る
ウェア All Rights Reserved.