Я новичок в весне и должен использовать весенние аннотации по всему проекту. Мне нужно создать список бобов. У меня нет возможности использовать context.getBean ("..") из класса, где мне нужно создать список.JAVA-Spring: Как создать бобы в петле?
Проблема: У меня есть 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();
}
..............
}
}
класс чтения выглядит следующим образом:
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
@ Макото, я все еще редактировал ответ. Вы все еще думаете, что это хорошо, как комментарий? – K139