Уникальный компонент типа — исключение

#java #spring #concurrency

#java #spring #параллелизм

Вопрос:

Ниже приведена моя конфигурация spring.

 <bean id="taskThreadExecutor" class="org.springframework.scheduling.concurrent.ConcurrentTaskExecutor">
            <property name="concurrentExecutor" ref="threadPoolExecutor" />
        </bean>

        <bean id="threadPoolExecutor" class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
            <property name="corePoolSize" value="100" />
            <property name="maxPoolSize" value="200" />
            <property name="queueCapacity" value="300" />
        </bean> 

        <bean id="concurrentTaskExecutor" class="org.springframework.scheduling.concurrent.ConcurrentTaskExecutor" scope="prototype">
            <qualifier value="rmsTaskExecutor"></qualifier> 
            <property name="concurrentExecutor">        
                <bean class="org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor">
                    <property name="corePoolSize" value="400" />
                    <property name="maxPoolSize" value="600" />
                    <property name="queueCapacity" value="3000" />
                </bean>     
            </property>
        </bean>
  

В моем классе я выполняю подключение следующим образом

  @Autowired
 @qualifier("rmsTaskExecutor")
 private ConcurrentTaskExecutor concurrentTaskExecutor;
  

Во время выполнения., я получаю следующее исключение., говорящее об отсутствии уникального компонента типа.

вложенным исключением является org.springframework.beans.factory.Исключение NoSuchBeanDefinitionException: нет уникального компонента типа [org.springframework.scheduling.concurrent.Определен ConcurrentTaskExecutor]: ожидаемый единственный соответствующий компонент, но найдено 2: [taskThreadExecutor, ConcurrentTaskExecutor]

Не знаю, где и что я пропустил., я использую версию spring 3.0.x

Комментарии:

1. Пожалуйста, добавьте вопрос в свой вопрос, иначе это плохой вопрос.

2. Исключение сообщает вам, что именно не так.

3. Я исправил формат., Да, вы правы, у меня есть два типа «ConcurrentTaskExecutor», я также попробовал byType, byName, квалификатор, @resource. Тем не менее, я получаю такое же исключение.

Ответ №1:

Нормально, у вас есть 2 ConcurrentTaskExecutor (taskThreadExecutor и ConcurrentTaskExecutor), поэтому попробуйте использовать @Resource (..)