programing

어떻게 봄에 같은 콩의 여러 인스턴스를 얻을 수 있습니까?

css3 2023. 8. 18. 22:49

어떻게 봄에 같은 콩의 여러 인스턴스를 얻을 수 있습니까?

기본적으로, 봄 콩은 싱글톤입니다.동일한 원두의 여러 인스턴스를 가공할 수 있는 방법이 있는지 궁금합니다.

현재 제가 하는 일은 다음과 같습니다.

    @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