我是春季新手,必須在項目中使用春季註釋。我需要創建一個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<RoxourWriter> 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的有:
<!-- Scans within the base package of the application for @Components to configure as beans -->
<context:component-scan base-package="company.online.Roxour.api"/>
根據當前的實現,這是我們正在創建的胎面方式:
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);
}
}
這可能嗎?請另外告知我一種不同的註解方法。
感謝
可能最好作爲評論。 – Makoto
@Makoto,我還在編輯答案。你仍然認爲這是一個好評嗎? – K139