[SPRING] 스프링 빈을 다시 초기화하는 방법은?
SPRING스프링 빈을 다시 초기화하는 방법은?
런타임에 Spring Bean을 다시 초기화 할 수 있습니까?
My Bean은 경우에 따라 정적 설정을 사용하고 Bean을 다시 초기화해야합니다.
해결법
-
==============================
1.스프링 컨텍스트에서 싱글 톤 빈을 업데이트하는 세 가지 옵션이 있습니다. 사용 사례에 맞는 하나를 선택할 수 있습니다.
스프링 컨텍스트에서 싱글 톤 빈을 업데이트하는 세 가지 옵션이 있습니다. 사용 사례에 맞는 하나를 선택할 수 있습니다.
Bean의 재로드 메소드 빈에서 속성을 업데이트 / 다시로드 할 메서드를 만듭니다. 트리거를 기반으로 봄 컨텍스트에서 빈에 액세스 한 다음 reload 메서드를 호출하여 bean 속성을 업데이트합니다 (싱글 톤 이후). 스프링 컨텍스트 및 자동 배선 / 주입되는 모든 곳에서 업데이트됩니다.
레지스트리에서 빈 삭제 및 등록 DefaultSingletonBeanRegistry를 사용하여 빈을 제거하고 다시 등록 할 수 있습니다. 이것에 대한 유일한 단점은 소비자 클래스에서 이미 autowired / 주입 된 빈의 이전 인스턴스를 새로 고침 / 다시로드하지 않는다는 것입니다.
DefaultSingletonBeanRegistry registry = (DefaultSingletonBeanRegistry) context.getBeanFactory(); registry.destroySingleton({yourbean}) //destroys the bean object registry.registerSingleton({yourbeanname}, {newbeanobject}) //add to singleton beans cache
@RefreshScope 구성 변경에서 빈 값 등록 정보를 새로 고치는 데 유용합니다. 그러나 그것은 매우 제한적이고 구체적인 목적을 가지고 있습니다. 그것에 관해 더 많은 것을 읽을 리소스.
-
==============================
2.Spring Cloud 의존성을 애플리케이션에 추가하고 bean에 @ConfigurationProperties 및 @RefreshScope 주석을 표시 할 수있다. 그런 다음 endpoint / refresh를 호출하면 빈의 @Value 속성이 다시 초기화됩니다.
Spring Cloud 의존성을 애플리케이션에 추가하고 bean에 @ConfigurationProperties 및 @RefreshScope 주석을 표시 할 수있다. 그런 다음 endpoint / refresh를 호출하면 빈의 @Value 속성이 다시 초기화됩니다.
from https://stackoverflow.com/questions/51218086/how-to-reinitialize-a-spring-bean by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring Boot @WebIntegrationTest 및 TestRestTemplate - 테스트 트랜잭션을 롤백 할 수 있습니까? (0) | 2019.03.29 |
---|---|
[SPRING] Spring에서 주어진 타입의 모든 의존성을 autowire하는 방법이 있습니까? (0) | 2019.03.29 |
[SPRING] Spring의 CachingConnectionFactory를 사용할 때 세션 닫기 (0) | 2019.03.29 |
[SPRING] Spring 보안 3.0.2로 OpenId 인증 및 자동 등록 (0) | 2019.03.29 |
[SPRING] 스프링 보안에서 커스텀 UserDetail 객체를 생성하는 방법 (0) | 2019.03.29 |