programing

스프링 부트 - Application.properties의 커스텀 변수

minecode 2023. 3. 26. 13:54
반응형

스프링 부트 - Application.properties의 커스텀 변수

스프링 부트클라이언트에서는 restful api를 사용하고 있습니다.Java 클래스에서 REST API의 IP 주소를 하드코딩하는 대신 application.properties에 사용할 수 있는 키 엔트리가 있습니까?

그렇지 않으면 커스텀 엔트리를 작성할 수 있습니까?

감사해요.

Spring Boot에서 사용하는 인프라스트럭처도 동일한 방법으로 자신의 프로젝트에서 사용할 수 있습니다.@zmitrok 답변에서 "알 수 없는 속성" 경고에 대해 코멘트했습니다.이는 속성에 메타데이터가 없기 때문에 IDE가 이를 인식하지 못하기 때문입니다.

제품을 사용하지 말 것을 강력히 권합니다.@ValueSpring Boot에 비해 다소 제한적이기 때문에 가능한 한 (@ValueSpring 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
}

그럼 두 가지 선택지가 있어

  1. 놓다@ComponentFooProperties설정 속성의 처리를 유효하게 하기 위해@EnableConfigurationProperties어느 쪽이든@Configurationclass (스프링 부트 이후 이 마지막 단계는 필요 없습니다)1.3.0.M3)
  2. 떠나FooProperties그대로 덧붙여서@EnableConfigurationProperties(FooProperties.class)당신의 어떤 사람에게도@ConfigurationSpring Bean이 자동으로 생성됩니다.

일단 그렇게 하고 나면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>

그러면 키가 인식되고 javadoc이 있으며 IDE가 기본값(필드에서 초기화한 값)을 제공합니다.변환 서비스 핸들(즉, 변환 서비스 핸들)을 사용할 수 있습니다.URL필드 상의 javadoc을 사용하여 키 문서를 생성합니다.

다음 중 하나를 추가할 수도 있습니다.JSR-303필드 제약 조건 검증(예: 유효한 IP인지 확인하기 위한 regex)

상세한 것에 대하여는, 이 샘플 프로젝트와 메뉴얼참조해 주세요.

IP 를 속성 파일에 하드 코드 하는 대신에, 다음과 같이 애플리케이션을 기동할 수 있습니다.

-Dmy.property=127.127.10.20

Spring Boot은 이 기능을 통해

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

application.properties에 자신의 엔트리를 추가할 수 있습니다.속성 이름이 http://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/ #common-application-properties에 나열된 공통 속성과 충돌하지 않는지 확인하십시오.

언급URL : https://stackoverflow.com/questions/32058814/spring-boot-custom-variables-in-application-properties

반응형