복붙노트

[SPRING] 외부 속성 파일이 변경되면 스프링 값으로 부팅 할 때 속성 값을 다시로드합니다.

SPRING

외부 속성 파일이 변경되면 스프링 값으로 부팅 할 때 속성 값을 다시로드합니다.

나는 스프링 부트를 사용하고 있으며, 두 개의 외부 속성 파일을 가지고있어서 그 값을 쉽게 바꿀 수있다.

하지만 스프링 애플 리케이션이 파일에서 읽는 것처럼 업데이트 될 때 변경된 값을 다시로드하기를 바랍니다. 속성 파일은 필자의 필요를 충족시키기에 충분히 쉽기 때문에 필자는 db 또는 파일이 필요 없다고 희망한다.

속성 값을로드하는 두 가지 다른 방법을 사용합니다. 코드 샘플은 다음과 같습니다.

@RestController
public class Prop1Controller{

    @Value("${prop1}")
    private String prop1;


    @RequestMapping(value="/prop1",method = RequestMethod.GET)
    public String getProp() {
        return prop1;
    }
}


@RestController
public class Prop2Controller{

    @Autowired
    private Environment env;

    @RequestMapping(value="/prop2/{sysId}",method = RequestMethod.GET)
    public String prop2(@PathVariable String sysId) {
        return env.getProperty("prop2."+sysId);
    }
}

내 응용 프로그램으로 부팅 할 것입니다.

-Dspring.config.location=conf/my.properties

해결법

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

    1.Spring 컨텍스트를 다시 시작해야 할까 봐 걱정됩니다.

    Spring 컨텍스트를 다시 시작해야 할까 봐 걱정됩니다.

  2. ==============================

    2.귀하의 필요를 성취 할 수있는 유일한 방법은 봄 구름을 가능하게하는 것입니다. 컨텍스트와 빈을 새로 고치는 새로 고침 끝점 / 새로 고침이 있습니다.

    귀하의 필요를 성취 할 수있는 유일한 방법은 봄 구름을 가능하게하는 것입니다. 컨텍스트와 빈을 새로 고치는 새로 고침 끝점 / 새로 고침이 있습니다.

    Spring-cloud-config-server (마이크로 서비스이고 빌드하기가 아주 쉽다)가 필요한지 잘 모르겠다. 설정이 저장되어있는 곳 (Git 또는 svn). 또는 응용 프로그램의 application.properties 파일에서만 사용할 수도 있습니다.

    여기서 새로 고침 범위와 봄 구름에 대한 문서를 찾을 수 있습니다.

  3. ==============================

    3.Spring Cloud를 사용할 수 있어야합니다.

    Spring Cloud를 사용할 수 있어야합니다.

    종속성으로 추가

    compile group: 'org.springframework.cloud', name: 'spring-cloud-starter', version: '1.1.2.RELEASE'
    

    그런 다음 @RefreshScope 주석을 사용하십시오.

    스프링 액추에이터가있는 경우에도 적합합니다.

    봄 구름 문서

  4. ==============================

    4.(1) 스프링 클라우드의 RestartEndPoint

    (1) 스프링 클라우드의 RestartEndPoint

    RestartEndPoint를 사용할 수 있습니다 : 프로그래밍 방식으로 스프링 부트 응용 프로그램 다시 시작 / 스프링 컨텍스트 새로 고침

    RestartEndPoint는 스프링 클라우드 컨텍스트와 함께 번들로 제공되는 액츄에이터 EndPoint입니다.

    그러나 RestartEndPoint는 파일 변경 사항을 모니터링하지 않으므로 직접 처리해야합니다.

    (2) devtools

    이것이 프로덕션 응용 프로그램을위한 것인지 아닌지는 알 수 없습니다. devtools를 조금씩 해킹하여 원하는 것을 할 수 있습니다.

    다른 질문을 위해 쓴이 다른 대답을 살펴보십시오. Jar를 실행할 때 스프링 부팅 DevTools 강제 실행

    파일 변경에 대한 Devtools 모니터 :

    기술적으로, devtools는 IDE 내에서만 작동하도록 만들어졌습니다. 해킹으로 항아리에서 시작할 때도 작동합니다. 그러나 실제 제작 응용 프로그램에서는 그렇게하지 않을 수도 있습니다.

  5. from https://stackoverflow.com/questions/39387272/reload-property-value-when-external-property-file-changes-spring-boot by cc-by-sa and MIT license