Notice
Recent Posts
Recent Comments
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

DeFacto-Standard IT

Spring Boot 2.4에서 properties 사용하기 본문

SpringFramework/References

Spring Boot 2.4에서 properties 사용하기

defacto standard 2021. 1. 16. 21:04

Spring Boot 2.4 기준

 

 - application.properties

wait.for-time=1s

 

 - MainApplication

@SpringBootApplication
@ConfigurationPropertiesScan // ConfigurationProperties를 스캔하도록 설정. Since 2.2.0
public class MainApplication {
    public static void main(String[] args) {
        SpringApplication.run(MainApplication.class, args);
    }
}

 

 -  WaitProperties

properties를 읽어서 사용하는 클래스

@ConfigurationProperties("wait")
@ConstructorBinding // Since 2.2.0
public class WaitProperties {
    private Duration forTime;
    
    // properties의 wait.for-time이 바인딩되며, 기본값은 0
    public WaitProperties(@DefaultValue("0") Duration forTime) {
        this.forTime = forTime;
    }
    
    public Duration forTime() {
        return forTime;
    }
}

 

 - properties가 Java Keyword인 경우

wait.for=1s
@ConfigurationProperties("wait")
@ConstructorBinding
public class WaitProperties {

    // for는 Java의 키워드이기 때문에 for를 그대로 사용할 수 없음
    private Duration forTime;
    
    // properties의 wait.for이 바인딩되며, 기본값은 0
    public WaitProperties(@DefaultValue("0") @Name("for") Duration forTime) {
        this.forTime = forTime;
    }
    
    public Duration getFor() {
        return forTime;
    }
}

 

 - import properties priority

spring.config.import 에 여러 properties파일이 있고, 같은 이름의 property를 갖는 경우,

리스트의 뒤에 있는 example2.properties의 wait.for가 우선순위가 높다.

# application.properties

# case1 : 우선순위 example2.properties > example.properties
spring.config.import=classpath:example.properties, example2.properties

# case2 : 우선순위 example.properties > example2.properties
spring.config.import=classpath:example2.properties, example.properties
# example.properties

wait.for=1s
# example2.properties

wait.for=4s

 

 

 - import external properties

# application.properties

spring.config.import=${user.home}/demos/ext.properties

 

mac 기준 user.home은 '/Users/<user>'에 해당하므로, '/Users/<user>/demos/ext.properties'를 읽음

# /Users/<user>/demos/ext.properties

wait.for=1s

 

external properties 파일의 extension이 생략된 경우

# application.properties

# /Users/<user>/demos/ext를 읽음
spring.config.import=${user.home}/demos/ext[.properties]

 

 - config tree

ConfigTreeConfigDataLocationResolver

/Users/<user>/demos/tree/wait/for 파일이 존재하는 경우

# application.properties

spring.config.import=configtree:${user.home}/demos/tree/

 

가져다 쓰려는 config key에 대한 파일이 없는 경우 에러가 날 수 있으므로, optional을 지정할 수 있음

# application.properties

spring.config.import=optional:configtree:${user.home}/demos/tree/

 

 

Comments