[SPRING] Spring 부트 - Application.properties의 사용자 정의 변수
SPRINGSpring 부트 - Application.properties의 사용자 정의 변수
나는 평온한 API를 소비하는 스프링 부트 클라이언트를 가지고있다. Java 클래스에서 REST API의 IP 주소를 하드 코딩하는 대신 사용할 수있는 application.properties에 키 항목이 있습니까?
그리고 그렇지 않다면 커스텀 엔트리를 만들 수 있습니까?
감사
해결법
-
==============================
1.Spring Boot가 사용하는 인프라는 프로젝트에서 똑같은 방법으로 사용할 수 있습니다. @zmitrok에서 "알 수없는 속성"경고에 대한 답변을 주셨습니다. IDE에 메타 데이터가 없으므로 속성에 메타 데이터가 없기 때문입니다.
Spring Boot가 사용하는 인프라는 프로젝트에서 똑같은 방법으로 사용할 수 있습니다. @zmitrok에서 "알 수없는 속성"경고에 대한 답변을 주셨습니다. IDE에 메타 데이터가 없으므로 속성에 메타 데이터가 없기 때문입니다.
@Value는 Spring Boot가 제공하는 것에 비해 다소 제한적이므로 @Value를 사용하지 말 것을 강력히 권고합니다 (@Value는 Spring Framework 기능입니다).
먼저 IP 용 POJO를 만듭니다.
@ConfigurationProperties("app.foo") public class FooProperties { /** * IP of foo service used to blah. */ private String ip = 127.0.0.1; // getter & setter }
그럼 너는 두 가지 선택권이있다.
일단 app.foo.ip을 application.properties에서 사용할 수 있으며 코드의 @Autowired FooProperties를 사용하여 속성의 값을 찾을 수 있습니다
@Component public MyRestClient { private final FooProperties fooProperties; @Autowired public MyRestClient(FooProperties fooProperties) { ... } public callFoo() { String ip = this.fooProperties.getIp(); ... } }
자, IDE에서 키가 여전히 노란색으로 표시됩니다. 마지막 단계는 빌드 할 때 코드를보고 관련 메타 데이터를 생성하는 추가 종속성을 추가하는 것입니다. pom.xml에 다음을 추가하십시오.
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-configuration-processor</artifactId> <optional>true</optional> </dependency>
그리고 voilà, 당신의 키가 인식되고 javadoc가 생기고 IDE가 기본값 (필드에서 초기화 한 값)을 제공합니다. 변환 서비스가 처리하는 모든 유형 (예 : URL)을 사용할 수 있고 필드의 javadoc을 사용하여 키에 대한 문서를 생성 할 수 있습니다.
필드에 JSR-303 제약 조건 유효성 검사를 추가 할 수도 있습니다 (예를 들어 올바른 IP를 검사하는 정규식).
자세한 내용은 샘플 프로젝트 및 문서를 확인하십시오.
-
==============================
2.속성 파일에 IP를 하드 코딩하는 대신 응용 프로그램을 시작할 수 있습니다.
속성 파일에 IP를 하드 코딩하는 대신 응용 프로그램을 시작할 수 있습니다.
-Dmy.property = 127.127.10.20
그리고 Spring Boot는 자동으로
@Value("${my.property}") private String myProperty;
-
==============================
3.application.properties에 고유 항목을 추가 할 수 있습니다. 속성 이름이 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties에 나열된 공통 속성과 충돌하지 않는지 확인하십시오.
application.properties에 고유 항목을 추가 할 수 있습니다. 속성 이름이 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#common-application-properties에 나열된 공통 속성과 충돌하지 않는지 확인하십시오.
from https://stackoverflow.com/questions/32058814/spring-boot-custom-variables-in-application-properties by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring OAuth2 - 토큰 저장소에 수동으로 액세스 토큰 생성 (0) | 2019.01.26 |
---|---|
[SPRING] Spring MVC의 폼 사용 : 데이터를 바인딩하는 체크 박스 (0) | 2019.01.26 |
[SPRING] Spring @SubscribeMapping은 실제로 어떤 주제에 클라이언트를 구독합니까? (0) | 2019.01.26 |
[SPRING] ResultSetExtractor와 Rowmapper의 차이점은 무엇입니까? (0) | 2019.01.26 |
[SPRING] 자바 웹 서비스 프레임 워크 / 라이브러리, 더 나은 이유는 무엇입니까? (0) | 2019.01.26 |