답변은 : https://stackoverflow.com/questions/48954087/intellij-idea-complains-cannot-resolve-spring-boot-properties-but-they-work-fine 에 잘 나와 있다.
공식적인 레퍼런스는 https://docs.spring.io/spring-boot/docs/current/reference/html/configuration-metadata.html 참고
- META-INF/spring-configuration-metadata.json
- META-INF/additional-spring-configuration-metadata.json
누군가 Inspection을 끄라고 하는데 이것은 좋은 방법이 아닌 것 같다. 인스펙션은 사용자의 실수를 막기 위한 기능인데 보기 싫다고 끄는 것은 문제가 있는 설정에 대해 통지를 받을 수 없기 때문이다.
대신 답변중 하나는 @ConfigurationProperties 를 이용하는 것인데 이것보다는 후자가 좋아 보인다.
src/main/resources/META-INF/spring-configuration-metadata.json 파일을 만들어서 커스텀 프로퍼티를 정의하는 것이다.
{
"properties": [
{
"name": "aws.accessKey",
"type": "java.lang.String"
},
{
"name": "aws.secretKey",
"type": "java.lang.String"
}
]
}
참고할 만 한 한글 블로그: http://wonwoo.ml/index.php/post/1599
다른 방법
다만 이렇게 하기 위해서는 maven이나 gradle 설정에 의존성을 추가해주어야 한다. (아래는 gradle 4.5 이후에 추가된 annotaionProcessor)
dependencies {
annotationProcessor "org.springframework.boot:spring-boot-configuration-processor"
추가적으로 @EnableConfigurationProperties 가 활성화되어 있어야 하고, @ConfigurationProperties 붙은 클래스를 등록할 수 있게 값으로 넣어주어야 한다.
빠르게 등록하기 위해 경로를 지정하지 않고 Class를 지정함에 주의한다.
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Import(EnableConfigurationPropertiesImportSelector.class)
public @interface EnableConfigurationProperties {
/**
* Convenient way to quickly register {@link ConfigurationProperties} annotated beans
* with Spring. Standard Spring Beans will also be scanned regardless of this value.
* @return {@link ConfigurationProperties} annotated beans to register
*/
Class<?>[] value() default {};
}
예)
@Configuration
@EnableConfigurationProperties(MyProperties.class)
public class MyPropertiesConfig {
}
'IDE > IntelliJ IDEA' 카테고리의 다른 글
[정규식] 리팩터링 중 찾아바꾸기 (2) | 2019.07.18 |
---|---|
[JSP] IntelliJ IDEA에서 JSP 개발하기 (0) | 2019.01.08 |
IntelliJ IDEA 2018.3 업데이트 되면서 플러그인 아이콘의 정체를 알았다. (0) | 2018.11.23 |
IntelliJ IDEA 2018.3 업데이트 (0) | 2018.11.23 |
IntelliJ IDEA 자동 업데이트가 되는 조건은 뭘까? (0) | 2018.11.22 |