복붙노트

[SPRING] Spring 부트 - Application.properties의 사용자 정의 변수

SPRING

Spring 부트 - Application.properties의 사용자 정의 변수

나는 평온한 API를 소비하는 스프링 부트 클라이언트를 가지고있다. Java 클래스에서 REST API의 IP 주소를 하드 코딩하는 대신 사용할 수있는 application.properties에 키 항목이 있습니까?

그리고 그렇지 않다면 커스텀 엔트리를 만들 수 있습니까?

감사

해결법

  1. ==============================

    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. ==============================

    2.속성 파일에 IP를 하드 코딩하는 대신 응용 프로그램을 시작할 수 있습니다.

    속성 파일에 IP를 하드 코딩하는 대신 응용 프로그램을 시작할 수 있습니다.

    -Dmy.property = 127.127.10.20

    그리고 Spring Boot는 자동으로

    @Value("${my.property}")
    private String myProperty;
    
  3. ==============================

    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에 나열된 공통 속성과 충돌하지 않는지 확인하십시오.

  4. from https://stackoverflow.com/questions/32058814/spring-boot-custom-variables-in-application-properties by cc-by-sa and MIT license