[SPRING] Spring에서 런타임시 빈을 동적으로 선언한다.
SPRINGSpring에서 런타임시 빈을 동적으로 선언한다.
다음과 같은 것이 가능한지 궁금합니다. 테스트 목적으로, 다른 테스트를 위해 어플리케이션 컨텍스트에서 다른 모의 클래스를 선언하고 싶습니다. Jersey REST 클라이언트를 사용하는 수락 테스트입니다. 런타임시 빈을 동적으로 선언하는 방법이 있습니까? Spring은 컨텍스트가로드 된 후 응용 프로그램 컨텍스트를 변경할 수있는 API를 가지고 있습니까?
해결법
-
==============================
1.응용 프로그램 컨텍스트에서 다른 Bean을 사용하는 일반적인 방법은 프로파일을 사용하는 것입니다. 다음 스프링 소스 게시물에서 프로파일에 대해 읽을 수 있습니다.
응용 프로그램 컨텍스트에서 다른 Bean을 사용하는 일반적인 방법은 프로파일을 사용하는 것입니다. 다음 스프링 소스 게시물에서 프로파일에 대해 읽을 수 있습니다.
첫 번째 질문에 대해서는 런타임시 BeanDefinitionRegistry.registerBeanDefinition () 메소드를 통해 Bean을 선언 할 수 있습니다. 예를 들면 다음과 같습니다.
BeanDefinitionBuilder builder = BeanDefinitionBuilder.rootBeanDefinition(SomeClass.class); builder.addPropertyReference("propertyName", "someBean"); // add dependency to other bean builder.addPropertyValue("propertyName", someValue); // set property value DefaultListableBeanFactory factory = (DefaultListableBeanFactory) context.getBeanFactory(); factory.registerBeanDefinition("beanName", builder.getBeanDefinition());
이미 구성된 singleton bean 인스턴스를 등록하는 것도 가능하다.
context.getBeanFactory().registerSingleton(beanName, singletonObject)
마지막으로 Spring은 컨텍스트를 새로 고친 후에 빈을 변경하는 명확한 방법을 제공하지 않지만 가장 일반적인 방법은 다음과 같습니다.
from https://stackoverflow.com/questions/15328904/dynamically-declare-beans-at-runtime-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] Join 테이블의 추가 속성을 위해 많은 수의 최대 절전 모드 매핑을 만드는 방법은 무엇입니까? (0) | 2018.12.10 |
---|---|
[SPRING] 봄 보안 사용자 정의 필터를 작성하는 방법? (0) | 2018.12.10 |
[SPRING] 봄 3 mvc, 올바른 구문을 사용하여 양식지지 개체로 <Foo> 목록? (0) | 2018.12.10 |
[SPRING] 서블릿 필터에서 Spring 빈을 얻으려면 어떻게해야합니까? (0) | 2018.12.09 |
[SPRING] @Test 이후 롤백 트랜잭션 (0) | 2018.12.09 |