[SPRING] 어떻게 ApplicationContext에서 싱글 톤 스프링 빈을 제거 할 수 있습니까?
SPRING어떻게 ApplicationContext에서 싱글 톤 스프링 빈을 제거 할 수 있습니까?
저는 모든 Spring Bean을 자체 LifeCycle Controller에서 관리 할 수 있도록 모듈 제어 시스템을 개발하고자합니다.
그러나 어떻게 Singleton Spring Bean을 ApplicationContext 밖으로 제거 할 수 있는지 알 수 없다.
흥미로운 문제 일 수 있습니다. 해결하도록 도와 주시겠습니까?
해결법
-
==============================
1.Bean 정의를 제거해보십시오. BeanDefinitionRegistry를 가져오고 removeDefinition (..)을 호출하십시오.
Bean 정의를 제거해보십시오. BeanDefinitionRegistry를 가져오고 removeDefinition (..)을 호출하십시오.
그것은 당신이 당신의 애플리케이션을 만드는 방법에 의존하지만, 예를 들어 웹 애플리케이션에서 다음과 같이 정의 레지스트리를 얻을 수 있습니다 :
BeanDefinitionRegistry factory = (BeanDefinitionRegistry) applicationCtx.getAutowireCapableBeanFactory();
(Bean 팩토리는 BeanDefinitionRegistry를 구현한다).
나는 빈 인스턴스가 제거 될지 모른다. 시도 해봐.
-
==============================
2.정의를 제거하는 것은 정의를 제거하고 해당 빈에 대한 모든 컨테이너 참조를 제거하는 것입니다. 해당하는 Singleton :
정의를 제거하는 것은 정의를 제거하고 해당 빈에 대한 모든 컨테이너 참조를 제거하는 것입니다. 해당하는 Singleton :
((BeanDefinitionRegistry) beanFactory).removeBeanDefinition("myBean");
싱글 톤을 제거하기 만하면됩니다.
((DefaultListableBeanFactory) beanFactory).destroySingleton("myBean");
후자의 방법은 싱글 톤을 등록했지만 bean 정의를 정의하지 않은 경우 특히 유용합니다.
((SingletonBeanRegistry) beanFactory).registerSingleton("myBean", myBeanInstance);
from https://stackoverflow.com/questions/6855811/how-can-i-remove-a-singleton-spring-bean-from-applicationcontext by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Spring + Hibernate : 같은 식별자 값을 가진 다른 객체가 이미 세션과 연관되어있다. (0) | 2018.12.07 |
---|---|
[SPRING] Spring Boot - 실행중인 포트를 얻는 방법 (0) | 2018.12.07 |
[SPRING] 오류 : java.lang.NoSuchMethodError : org.objectweb.asm.ClassWriter. <init> (I) V (0) | 2018.12.07 |
[SPRING] 세터 DI 대. DI 빌더는 봄? (0) | 2018.12.07 |
[SPRING] YamlPropertiesFactoryBean을 사용하여 Spring Framework 4.1을 사용하여 YAML 파일을로드하는 방법? (0) | 2018.12.07 |