Я использую метод метода поиска в Spring 3, чтобы вставить компонент-прототип в одноэлементный компонент, как описано в документах Spring here. Внутри моего прототипа bean у меня есть зависимость @Autowired
от другого компонента, объявленного в моем applicationContext.xml. Инъекция метода поиска, похоже, работает должным образом в том, что мой прототип-боб вводится в мой одноэлементный компонент, однако зависимость прототипа вообще не вводится. Могут ли зависимости быть введены в прототипный компонент обычным способом, когда прототип возвращается методом поиска? Если нет, каков предпочтительный способ сделать это?Вкладные зависимости в прототипе bean
Edit: Определения фасоли заключаются в следующем:
<bean id="jobRouter" class="com.ccn.JobRouter">
<lookup-method name="createJobConsumer" bean="jobConsumer"/>
</bean>
<bean id="jobConsumer" class="com.ccn.JobConsumer" scope="prototype"/>
<bean id="taskExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
<property name="corePoolSize" value="5" />
<property name="maxPoolSize" value="100" />
<property name="WaitForTasksToCompleteOnShutdown" value="true" />
</bean>
JobRouter
public abstract class JobRouter {
private LinkedHashMap<String, JobConsumer> jobRoutingMap = new LinkedHashMap<String, JobConsumer>();
public void add(Job Job) {
if(!jobRoutingMap.containsKey(job.getObjectKey())){
jobRoutingMap.put(job.getObjectKey(), createJobConsumer());
}
//Hand off job to consumer
JobConsumer jobConsumer = jobRoutingMap.get(job.getObjectKey());
jobConsumer.add(job);
}
protected abstract JobConsumer createJobConsumer();
}
JobConsumer
public class JobConsumer {
@Autowired private TaskExecutor taskExecutor;
private LinkedBlockingQueue<Job> jobQueue = new LinkedBlockingQueue<Job>();
public JobConsumer() {
taskExecutor.execute(new JobQueueMonitor());
}
public boolean add(Job job) {
if(!jobQueue.contains(job)){
return jobQueue.add(job);
}
return true;
}
private class JobQueueMonitor implements Runnable{
@Override
public void run() {
...
}
}
}
Можете ли вы поделиться определениями bean? –
@kocko Я отредактировал с моим кодом – Tom