어떻게 봄에 같은 콩의 여러 인스턴스를 얻을 수 있습니까?
기본적으로, 봄 콩은 싱글톤입니다.동일한 원두의 여러 인스턴스를 가공할 수 있는 방법이 있는지 궁금합니다.
현재 제가 하는 일은 다음과 같습니다.
@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);
}
}
}
서비스 클래스입니다.
public class MyService implements Runnable {
private String name;
public Myservice(int i){
name=String.ValueOf(i);
}
}
여기서 사용 사례를 단순화했습니다.저는 My Service를 최대한 활용하고 구성을 기반으로 가능한 많은 수를 얻고 싶습니다(즉,num
) 위의 for-loop에서? 어떻게 그게 가능한지 궁금해합니다.
감사해요.
먼저 당신은 만들어야 할 것입니다.MyService
춘두클래스에 다음과 같은 주석을 달면 이 작업을 수행할 수 있습니다.@Component
다음으로 말씀하신 것처럼 스프링콩은 기본적으로 싱글톤이므로 주석을 한 번 더 달아서 변경할 수 있습니다.@Scope("prototype")
.
프로토타입 빈 스코프는 봄에 빈 인스턴스를 요청할 때마다 새 인스턴스가 생성된다는 의미입니다.이것은 자동 배선에 적용되며, 애플리케이션 컨텍스트에 빈을 문의합니다.getBean()
콩 공장을 이용하는 것.
다음은 동일한 유형의 원하는 개수의 콩을 등록하는 간단한 예입니다.
@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 {
}
}
언급URL : https://stackoverflow.com/questions/42378023/how-to-get-multiple-instances-of-same-bean-in-spring
'programing' 카테고리의 다른 글
"@UIApplicationMain"은 무엇을 의미합니까? (0) | 2023.08.18 |
---|---|
문자열 리소스 새 줄 /n을 사용할 수 없습니까? (0) | 2023.08.18 |
특성 오류: '워크시트' 개체에 'set_column' 특성이 없습니다. (0) | 2023.08.18 |
Python을 사용하여 VBA 스크립트를 작성하시겠습니까? (0) | 2023.08.18 |
Local Container Entity Manager Factory Bean과 Local Entity Manager Factory Bean의 차이점은 무엇입니까? (0) | 2023.08.18 |