DolphaGo / TIL

TIL & issues
0 stars 1 forks source link

[Spring] PropertySource #73

Open DolphaGo opened 2 years ago

DolphaGo commented 2 years ago
@Service
public class TestService {

    @Value("${test.dolphago}")
    private String dolphago;
...

위와 같이 Value로 값을 사용하려면, @Configuration@PropertySource 로 애플리케이션 Env 객체에 값을 주입된다. 기본 루트/네임 같은 경우는 따로 지정하지 않아도 잘 인식한다. 그런데 디렉터리 내부라던가, profile에 따라 다르게 하고 싶다면 임의로 지정해주는 것이 설정하는 부분에선 편할 터.

@PropertySource(value="classpath:/myYamlSource.yml")
@Configuration
public class myConfig {
  ...
}

@PropertySource의 인자로는 여러개가 들어갈 수 있는데, 예를 들면 @PropertySource({ A, B}) 와 같은 식이다.

    @Configuration
    @PropertySource({
        "classpath:config.properties",
        "classpath:db.properties" //if same key, this will 'win'
    })
    public class AppConfig {
        @Autowired
        Environment env;
    }

위와 같이 여러개의 프로퍼티를 넣었을 때, 동일한 key가 있다면, 뒤에 위치한 프로퍼티 값으로 덮어씌워지게 된다.

profile을 구분하고 있다면 다음과 같이 profile에 따른 프로퍼티 선택도 가능할 것이다.

@PropertySource({"classpath:/dolphago/my-default.properties", "classpath:/dolphago/my-${env:beta}.properties"})
DolphaGo commented 2 years ago

https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/context/annotation/PropertySource.html