Java Spring依赖项注入对象池

Java Spring依赖项注入对象池,java,spring,dependency-injection,Java,Spring,Dependency Injection,我们有一个对象,它在spring引导容器中进行一些计算。我们称之为“床单”。当应用程序启动时,我们需要实例化(比如说10张)表单。每次开始计算时,我们都需要通过DI访问该工作表的一个实例,并在额外的线程中运行 你知道在春天这是否可行吗?你可以通过以下方式实现。。假设您有一个Sheet类,如下所示。我使用了java8来编译代码 Sheet.java @Component("sheet") @Scope(value = "prototype") public class Sheet

我们有一个对象,它在spring引导容器中进行一些计算。我们称之为“床单”。当应用程序启动时,我们需要实例化(比如说10张)表单。每次开始计算时,我们都需要通过DI访问该工作表的一个实例,并在额外的线程中运行


你知道在春天这是否可行吗?

你可以通过以下方式实现。。假设您有一个
Sheet
类,如下所示。我使用了java8来编译代码

Sheet.java

 @Component("sheet")
    @Scope(value = "prototype")
    public class Sheet {
        // Implementation goes here
    }
现在,您需要第二个类
SheetPool
,其中包含10个
Sheet

SheetPool.java

public class SheetPool {

    private List<Sheet> sheets;

    public List<Sheet> getSheets() {
        return sheets;
    }

    public Sheet getObject() {
        int index = ThreadLocalRandom.current().nextInt(sheets.size());
        return sheets.get(index);
    }

}
@Configuration
public class ApplicationConfig {

@Autowired
ApplicationContext applicationContext;

@Bean
public SheetPool sheetPool() {
    SheetPool pool = new SheetPool();

    IntStream.range(0, 10).forEach(e -> {
        pool.getSheets().add((Sheet) applicationContext.getBean("sheet"));
    });

    return pool;
}
}

现在,当应用程序启动时,
SheetPool
对象将使用10个不同的Sheet实例创建。。要访问
工作表
对象,请使用以下代码

@Autowired
SheetPool  sheetPool;

Sheet sheetObj = sheetPool.getObject();

你不能用一些普通的游泳池吗?Like?Create custom spring bean这个答案是正确的,但是请注意,如果您使
SheetPool
实现,那么您可以直接注入
Sheet
,它将从工厂bean(即池)中检索。