[SPRING] Spring의 application.properties에서 @Value 속성을 다시로드하는 방법은 무엇입니까? [복제]
SPRINGSpring의 application.properties에서 @Value 속성을 다시로드하는 방법은 무엇입니까? [복제]
나는 스프링 부트 응용 프로그램을 가지고있다. 실행 폴더 아래에 추가 구성 파일이 있습니다.
dir / config / application.properties
응용 프로그램이 시작되면 파일의 값을 사용하여 다음에 삽입합니다.
@Value("${my.property}")
private String prop;
질문 : @Value 속성을 다시로드하려면 어떻게해야합니까? 런타임 중에 application.properties 구성을 변경하고 @Value 필드를 업데이트 할 수 있기를 원합니다 (어쩌면 앱 내부에서 / reload 서블릿을 호출하여 해당 업데이트를 트리거 할 수 있습니다).
그러나 어떻게?
해결법
-
==============================
1.아래 빈을 사용하여 config.properties를 1 초마다 다시로드하십시오.
아래 빈을 사용하여 config.properties를 1 초마다 다시로드하십시오.
@Component public class PropertyLoader { @Autowired private StandardEnvironment environment; @Scheduled(fixedRate=1000) public void reload() throws IOException { MutablePropertySources propertySources = environment.getPropertySources(); PropertySource<?> resourcePropertySource = propertySources.get("class path resource [config.properties]"); Properties properties = new Properties(); InputStream inputStream = getClass().getResourceAsStream("/config.properties"); properties.load(inputStream); inputStream.close(); propertySources.replace("class path resource [config.properties]", new PropertiesPropertySource("class path resource [config.properties]", properties)); } }
기본 설정은 다음과 같습니다.
@EnableScheduling @PropertySource("classpath:/config.properties") public class HelloWorldConfig { }
@Value를 사용하는 대신 최신 속성을 사용하려고 할 때마다
environment.get("my.property");
from https://stackoverflow.com/questions/40287771/how-to-reload-a-value-property-from-application-properties-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 봄 부팅 응용 프로그램에서 작업을 예약하는 가장 좋은 방법은 무엇입니까? (0) | 2019.01.09 |
---|---|
[SPRING] SPA 프론트 엔드 용 스프링 부트 구성 (0) | 2019.01.09 |
[SPRING] ViewScoped Bean이 NotSerializableException을 발생시킵니다. (0) | 2019.01.09 |
[SPRING] Spring 3 START_ARRAY 토큰에서 객체의 인스턴스를 deserialize 할 수 없습니다. REST Webservice (0) | 2019.01.09 |
[SPRING] Spring Security가 새로운 세션을 생성하는 것을 멈추는 방법? (0) | 2019.01.09 |