我是春季新手,必须在项目中使用春季注释。我需要创建一个bean列表。我没有选择从我必须创建列表的类中使用context.getBean(“..”)。JAVA-Spring:如何在循环中创建bean?
问题是: 我有3类:处理器,读者,作家。我必须在处理器类中创建一个编写器列表。
这就是我要找:(试图@Autowire“RoxourReader readerThread”和“名单writerThreads”,但不知道如何确定列表的大小和需要添加的名称为好)
package company.online.Roxour.api.operation;
{
@Component
@Scope("singleton")
public class RoxourProcessor
{
.........
private int PAYLOAD_SIZE;
private int MAX_READER_THREADS;
private int MAX_WORKER_THREADS;
@Autowired
ApplicationEnvironment applicationEnvironment;
@Autowired
RoxourUtil util;
//I wish to have something like this
@Autowired
RoxourReader readerThread
//I wish to have something like this
@Autowired
List writerThreads;
@PostConstruct public void initialize()
{
PAYLOAD_SIZE = applicationEnvironment.getPayloadSize();
MAX_READER_THREADS = applicationEnvironment.getMaxReaderThreads();
MAX_WORKER_THREADS = applicationEnvironment.getMaxWorkerThreads();
}
..............
}
}
Reader类的样子:
package company.online.Roxour.api.operation;
{
@Component
@Scope("prototype")
public class RoxourReader extends Thread
{
.........
@Autowired
ApplicationEnvironment applicationEnvironment;
public RoxourReader(String name)
{
this.name = name;
}
..............
}
}
和作者类的样子:
package company.online.Roxour.api.operation;
{
@Component
@Scope("prototype")
public class RoxourWriter extends Thread
{
.........
@Autowired
ApplicationEnvironment applicationEnvironment;
public RoxourWriter(String name)
{
this.name = name;
}
..............
}
}
context.xml的有:
根据当前的实现,这是我们正在创建的胎面方式:
private void createAllThreads()
{
readerThread = new RoxourReader( "Reader " + 1);
writerThreads= new RoxourWriter[ MAX_WORKER_THREADS ];
for (int i = 0; i < MAX_WORKER_THREADS; i++)
{
writerThreads[ i ] = new RoxourWriter("Uploader " + i);
}
}
这可能吗?请另外告知我一种不同的注解方法。
感谢
2016-06-09
Patty