[SPRING] 스프링 컨테이너가 빈의 싱글 톤 인스턴스를 반환하지 않게하려면 어떻게해야합니까?
SPRING스프링 컨테이너가 빈의 싱글 톤 인스턴스를 반환하지 않게하려면 어떻게해야합니까?
BeanFactory에서 getBean (name)을 호출하면 응용 프로그램 컨텍스트에 정의 된 Bean의 인스턴스가 반환됩니다. 그러나 getBean (name)을 다시 (같은 이름으로) 호출하면 빈의 동일한 인스턴스가 다시 생깁니다. 나는 이것이 어떤 경우에 바람직 할 수 있다는 것을 이해하지만 BeanFactory에게 나에게 새로운 인스턴스를 주도록 어떻게 말합니까?
Spring 구성의 예 (간결하게 ... 일부 자세한 내용은 생략했지만,이 점을 이해해야합니다.) :
<beans>
<bean id="beanA" class="misc.BeanClass"/>
</beans>
자바 예제 :
for(int i = 0;i++;i<=1) {
ApplicationContext context = ClassPathXmlApplicationContext("context.xml");
Object o = context.getBean("beanA");
System.out.println(o.toString()); // Note: misc.BeanA does not implement
// toString(), so this will display the OOID
// so that we can tell if it's the same
// instance
}
이걸 실행할 때 나는 다음과 같은 것을 얻는다.
misc.BeanClass@139894
misc.BeanClass@139894
두 인스턴스 모두 동일한 OOID를 가지고 있습니다 ... 그래서 이들은 동일한 인스턴스입니다 ...하지만 나는 다른 인스턴스를 원했습니다.
해결법
-
==============================
1.당신은 봄에 singleton bean이 아닌 prototype bean을 원한다고 말할 필요가있다.
당신은 봄에 singleton bean이 아닌 prototype bean을 원한다고 말할 필요가있다.
<bean id="beanA" class="misc.BeanClass" scope="prototype"/>
이렇게하면 각 요청마다 새로운 인스턴스가 생성됩니다.
-
==============================
2.기본 범위는 싱글 톤이지만 프로토 타입, 요청, 세션 또는 글로벌 세션으로 설정할 수 있습니다.
기본 범위는 싱글 톤이지만 프로토 타입, 요청, 세션 또는 글로벌 세션으로 설정할 수 있습니다.
from https://stackoverflow.com/questions/444623/how-do-i-force-a-spring-container-not-to-return-a-singleton-instance-of-a-bean by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 스프링 JSON 요청 본문이 Java POJO에 매핑되지 않았습니다. (0) | 2019.03.25 |
---|---|
[SPRING] RestTemplate은 URL을 이스케이프 처리하지 않습니다. (0) | 2019.03.24 |
[SPRING] JUnitTest의 @ControllerAdvice 주석이 달린 컨트롤러를 MockMVC에 등록하십시오. (0) | 2019.03.24 |
[SPRING] 'hibernate.dialect'가 설정되어 있지 않으면 Connection은 null이 될 수 없다. (0) | 2019.03.24 |
[SPRING] Spring Boot에서 다중 데이터 소스와 스키마 생성 (0) | 2019.03.24 |