如何在春天获得同一个bean的多个实例?

bra*_*orm 8 spring spring-bean spring-boot spring-4

默认情况下,spring bean是单例.我想知道是否有办法获得同一个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);
                }

    }
}
Run Code Online (Sandbox Code Playgroud)

这是Service类

    public class MyService implements Runnable {

    private String name;

    public Myservice(int i){

    name=String.ValueOf(i);

    }
  }
Run Code Online (Sandbox Code Playgroud)

我在这里简化了我的用法.我希望将MyService作为spring bean,并根据num上述for循环中的configuartion(即)获取尽可能多的内容?想知道这是怎么可能的.

谢谢

小智 19

首先,你必须制作MyService一个Spring bean.您可以通过使用注释来完成此操作@Component.接下来,正如你所说,Spring bean默认是单例,所以可以用另外一个注释来改变它@Scope("prototype").

原型bean范围意味着每次向Spring请求bean的实例时,都会创建一个新实例.这适用于自动装配,向bean询问应用程序上下文getBean(),或使用bean工厂.

  • bean上的较新配置而不是使用`@Scope("prototype)`是`@Scope(scopeName = ConfigurableBeanFactory.SCOPE_PROTOTYPE)` (3认同)
  • 那么我如何为每个实例化的名称命名。您能展示如何将它用于上面的用例吗? (2认同)