Spring Boot | 외부 설정 이용 | 같은 접두사를 가지는 속성을 Bean에 매핑
코드 작성
application.properties
person.firstName=Sato
person.last-name=Taro
person.age=18
Person.java
package sample.springboot;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
@Component
@ConfigurationProperties(prefix="person")
public class Person {
private String firstName;
private String lastName;
private int age;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public void setAge(int age) {
this.age = age;
}
public void hello() {
System.out.println(firstName + " " + lastName + " : " + age);
}
}
Main.java
package sample.springboot;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.ConfigurableApplicationContext;
@SpringBootApplication
@EnableConfigurationProperties
public class Main {
public static void main(String[] args) {
try (ConfigurableApplicationContext ctx = SpringApplication.run(Main.class, args)) {
Person person = ctx.getBean(Person.class);
person.hello();
}
}
}
실행 결과
Sato Taro : 18
@ConfigurationProperties
을 사용하면 특정 접두사와 속성들을 Bean에 매핑 할 수 있다. - Bean은 setter 메소드가 필요하다. - 필드의 이름은 낙타 대문자(camelcase) 이외에도 하이픈(-) 구분과 언더스코어(_) 경우에도 매핑을해 준다.- 이 구조를 활성화하려면
@EnableConfigurationProperties
어노테이션을 추가를 해야 한다. - 엄밀히 말하면,@Configuration
어노테이션이 부여 된 클래스에 추가한다.