2015-10-28 27 views
1

我有以下Spring組件:Spring組件

@Component(LogicQualifiedBeanNames.PRODUCT_EVENTS_FLOW_PROCESSOR) 
public class ProductEventsFlowProcessor extends AbstractFlowProcessor { 

private List<ProductEventDetector> productEventDetectors; 
private BesRequestFactory besRequestFactory; 
private BesAccessor besAccessor; 

@Autowired 
public ProductEventsFlowProcessor(ItemsClassifier<WriteProductItem> itemsClassifier, 
     @Qualifier(LogicQualifiedBeanNames.PRODUCT_EVENTS_DETECTORS) List<ProductEventDetector> productEventDetectors, 
     BesRequestFactory requestFactory, BesAccessor besAccessor) { 
    super(itemsClassifier); 
    this.productEventDetectors = productEventDetectors; 
    this.besRequestFactory = requestFactory; 
    this.besAccessor = besAccessor; 
} 

而下面的配置類:

@Configuration 
public class FlowConfiguration { 

    private ProductEventDetector deleteProductEventDetector = new DeleteProductEventDetector(); 

    @Bean(name = LogicQualifiedBeanNames.PRODUCT_EVENTS_DETECTORS) 
    public List<ProductEventDetector> getProductEventDetectors() { 
     List<ProductEventDetector> productEventDetectors = Lists.newArrayList(deleteProductEventDetector); 
     return productEventDetectors; 
    } 
} 

而下面的上下文配置文件:

<beans:beans> 
    <import resource="classpath:core-module-context.xml" /> 

<context:component-scan base-package="com.stackoverflow.logic" /> 
<aop:aspectj-autoproxy /> 

</beans:beans> 

當我測試我的應用程序時,我收到以下消息:

org.springframework.beans.factory.NoSuchBeanDefinitionException: No qualifying bean of type [com.stackoverflow.logic.events.ProductEventDetector] found for dependency [collection of com.stackoverflow.logic.events.ProductEventDetector]: expected at least 1 bean which qualifies as autowire candidate for this dependency. Dependency annotations: {@org.springframework.beans.factory.annotation.Qualifier(value=productEventDetectors)} 

我已經嘗試使用DependsOn註釋,但這沒有幫助。

+0

類似的問題:http://stackoverflow.com/questions/33167789/beans-property-is-not-setting-from-utillist-object/33170175#33170175 – Lovababu

回答

1

我發現了這個問題。 問題在於創建一個類型爲List的bean。出於某種原因,春天不喜歡那樣。 有2個解決問題的辦法:

  1. 用一個具體的類象ArrayList
  2. 使用@Resource註釋,而不是@Autowired

這解決了這個問題,但我仍然不知道爲什麼春天拒絕創建List類型的bean。對此有何解釋?

+0

請參閱:http://stackoverflow.com/questions/ 33167789 /豆屬性此結果未設定從 - utillist對象/ 33170175#33170175 – Lovababu