[SPRING] 봄에 같은 콩을 여러 개 가져 오는 법?
SPRING봄에 같은 콩을 여러 개 가져 오는 법?
기본적으로 스프링 빈은 싱글 톤입니다. 처리를 위해 동일한 bean의 여러 인스턴스를 얻는 방법이 있는지 궁금합니다.
여기 내가 현재하는 일이있다.
@Configuration
public class ApplicationMain {
@Value("${service.num: not configured}")
private int num;
//more code
@PostConstruct
public void run(){
for (int i = 0; i < num ; i++) {
MyService ser = new MyService(i);
Future<?> tasks = executor.submit(ser);
}
}
}
다음은 Service 클래스입니다.
public class MyService implements Runnable {
private String name;
public Myservice(int i){
name=String.ValueOf(i);
}
}
여기서 유스 케이스를 단순화했습니다. MyService를 Spring 빈으로 사용하고 위의 for-loop에서 구성 (num)을 기반으로 가능한 한 많이 얻고 싶습니다. 그것이 어떻게 가능한지 궁금해합니다.
감사
해결법
-
==============================
1.먼저 MyService를 Spring bean으로 만들어야한다. @Component로 클래스에 주석을 달아이를 수행 할 수 있습니다. 다음으로, 당신이 말했듯이, 스프링 빈은 기본적으로 싱글 톤이므로, @ Snope ( "prototype") 주석을 하나 더 사용하여 변경할 수 있습니다.
먼저 MyService를 Spring bean으로 만들어야한다. @Component로 클래스에 주석을 달아이를 수행 할 수 있습니다. 다음으로, 당신이 말했듯이, 스프링 빈은 기본적으로 싱글 톤이므로, @ Snope ( "prototype") 주석을 하나 더 사용하여 변경할 수 있습니다.
프로토 타입 빈 범위는 Spring에 빈 인스턴스를 요청할 때마다 새로운 인스턴스가 생성된다는 것을 의미합니다. 이는 Autowiring, getBean ()을 사용하여 Bean에 대한 응용 프로그램 컨텍스트를 요청하거나 Bean 팩토리를 사용하는 경우에 적용됩니다.
-
==============================
2.다음은 동일한 유형의 원하는 수의 Bean을 등록하는 간단한 예제입니다.
다음은 동일한 유형의 원하는 수의 Bean을 등록하는 간단한 예제입니다.
@Configuration public class MultiBeanConfig implements ApplicationContextAware { @Value("${bean.quantity}") private int quantity; @Override public void setApplicationContext(ApplicationContext applicationContext) throws BeansException { for (int i = 0; i < quantity; i++) { ((ConfigurableApplicationContext)applicationContext).getBeanFactory() .registerSingleton("my-service-" + i, new MyService()); } assert(applicationContext.getBeansOfType(MyService.class).size() == quantity); } class MyService { } }
from https://stackoverflow.com/questions/42378023/how-to-get-multiple-instances-of-same-bean-in-spring by cc-by-sa and MIT license
'SPRING' 카테고리의 다른 글
[SPRING] 어노테이션을 사용하는 Spring Bean 상속 Bean reference back issue (0) | 2019.05.09 |
---|---|
[SPRING] Apache CXF + Spring : 간단한 클라이언트 생성 (0) | 2019.05.09 |
[SPRING] Google App Engine - org.datanucleus.exceptions.NucleusUserException : 객체 관리자가 닫혔습니다. (0) | 2019.05.09 |
[SPRING] JAX WS webservice는 applicationcontext에서 스프링 빈을 가져 가지 않으므로 null 포인터 예외가 발생합니다. (0) | 2019.05.09 |
[SPRING] 스프링 부트의 리소스 폴더에서 파일 읽기 (0) | 2019.05.09 |