일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 카프카
- kafkastreams
- spring-cloud-stream
- kafkastream
- statestore
- Logstash
- Elasticsearch
- reactive
- confluent
- RabbitMQ
- kafka interactive query
- scala 2.10
- kafka streams
- Kafka
- aws
- spring-batch
- Spring
- coursera
- Elk
- avo
- spring-kafka
- scala
- 플레이 프레임워크
- 한빛미디어
- springboot
- gradle
- play framework
- enablekafkastreams
- Slick
- schema registry
- Today
- Total
b
ConfigurationProperties 가 Intellij에서 에러로 표시되는 경우 본문
스프링에서 가장 쉽게 프로퍼티를 읽어오는 방법은 @Value를 이용하는 것이다.
- @Value(value="${app.base.name}") 를 이용해서 application의 프로퍼티 하나를 읽어오거나
- @Value("#{systemProperties['os.name']}") 처럼 이용해서 시스템 값을 가져오거나
- @Value("${spring.profiles.active:default}") 를 이용해서 프로파일값을 가져 올 수 있지만,
expression 을 이용하거나, 몇몇 한정된 경우에만 쓰이고 실제로는 @ConfigurationProperties를 더 많이 이용한다.
(링크 : https://docs.spring.io/spring-boot/docs/current/api/org/springframework/boot/context/properties/ConfigurationProperties.html )
ConfigurationProperties를 를 이용해서 외부 설정값을 application 내부에 사용하기 위해서는 spring bean으로 등록해야 한다.
첫번째로 명시적으로 @Bean 으로 명시적으로 생성 하기
@Configuration
public class AppConfigurare {
@Bean
public BistrosAppProperties bistrosAppProperties() {
return new BistrosAppProperties();
}
}
두번째로는 간단하기 해당 클래스에 바로 @Configuration을 붙여도 된다.
@Configuration
@ConfigurationProperties(prefix = "app.base")
public class BistrosAppProperties {
...
}
둘다 동작은 하지만, Intellij IDE 에서는 아래와 같은 화면을 보여준다.
이 꼴보기 싫은 빨간줄을 없애려면 가이드대로 @EnableConfigratuinProperties를 사용해야 한다.
그래서 order-eda-gateway 는 4개의 @ConfigurationProperties 클래스가 존재하지만 @EnableConfigurationProperties 도 3개나 선언했다. (패키지별로의 커플링을 위해서 모듈화 되어 있다)
왜 이럴까 갑자기 궁금해져서 찾아보니.... https://youtrack.jetbrains.com/issue/IDEA-204153
@Component 는 사용하면 빨간줄이 안나오도록 수정되었고, @Service는 여전히 에러라고 표시된다.
@Configuration 이나 @Service 어노테이션을 사용 할 경우에 에러라고 나오는 것은 문제이고 '경고'로 나와야 할것 같지만, 그건 좀 어려운것 같다. 정도로 이해했다. 그러니까... 그냥 이렇게 쓰자 '_';;
ps. 내 스프링 기억은 2.5에서 끝인데 끝도 없이 뭐가 생기네 https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-external-config.html 를 보면 properties 의 적용 순서의 첫번째가 devtools global properties이다. 쓸일도 없고 써본적도 없는 devtools ....