Spring 如何@Autowire泛型类型到内部泛型类';没有xml配置的bean?

Spring 如何@Autowire泛型类型到内部泛型类';没有xml配置的bean?,spring,generic-type-argument,Spring,Generic Type Argument,我有一个通用类DefaultBatchReportService。 我想将不同的POJO类、服务和Dao传递到这个泛型类中 然而,我发现将特定类传递给具有内部自动连接泛型类的泛型抽象类很困难 我得到的错误如下: 2016年2月2日下午1:49:10 com.sun.faces.application.view.ViewScopeManager 2016年2月2日下午1:49:10 com.sun.faces.lifecycle.InvokeApplicationPhase 执行警告:创建名为“r

我有一个通用类DefaultBatchReportService。 我想将不同的POJO类、服务和Dao传递到这个泛型类中

然而,我发现将特定类传递给具有内部自动连接泛型类的泛型抽象类很困难

我得到的错误如下:

2016年2月2日下午1:49:10 com.sun.faces.application.view.ViewScopeManager 2016年2月2日下午1:49:10 com.sun.faces.lifecycle.InvokeApplicationPhase 执行警告:创建名为“rt001Bean”的bean时出错:注入 自动连线依赖项的数目失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 自动连线字段:专用 com.edgar.report.core.DefaultBatchReportService com.edgar.test.RT001Bean.bReportController;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“defaultBatchReportService”的bean:注入 自动连线依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 autowire字段:private com.edgar.report.core.SingleReportService com.edgar.report.core.DefaultBatchReportService.singleReportService; 嵌套异常是 org.springframework.beans.factory.NoniqueBeandDefinitionException:否 [com.edgar.report.core.SingleReportService]类型的限定bean是 定义:需要单个匹配bean,但找到3:RT001Service, RT002Service,RT003Service org.springframework.beans.factory.BeanCreationException:错误 创建名为“rt001Bean”的bean:自动连线的注入 依赖关系失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 自动连线字段:专用 com.edgar.report.core.DefaultBatchReportService com.edgar.test.RT001Bean.bReportController;嵌套异常是 org.springframework.beans.factory.BeanCreationException:错误 创建名为“defaultBatchReportService”的bean:注入 自动连线依赖失败;嵌套异常是 org.springframework.beans.factory.BeanCreationException:无法 autowire字段:private com.edgar.report.core.SingleReportService com.edgar.report.core.DefaultBatchReportService.singleReportService; 嵌套异常是 org.springframework.beans.factory.NoniqueBeandDefinitionException:否 [com.edgar.report.core.SingleReportService]类型的限定bean是 已定义:需要单个匹配bean,但找到3个: RT001Service、RT002Service、RT003Service位于 org.springframework.beans.factory.annotation.AutoWiredNotationBeanPostProcessor.PostProcessPropertyValue(AutoWiredNotationBeanPostProcessor.java:334) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1210) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:537) 在 org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:476) 在 org.springframework.beans.factory.support.AbstractBeanFactory$2.getObject(AbstractBeanFactory.java:342) 位于com.gitgub.javaplugs.jsf.ViewScope.get(ViewScope.java:69) org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:337) 在 org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:194) 在 org.springframework.context.support.AbstractApplicationContext.getBean(AbstractApplicationContext.java:956) 在 org.springframework.beans.factory.access.el.SpringBeanELResolver.getValue(SpringBeanELResolver.java:55) 在 com.sun.faces.el.DemuxCompositeELResolver.\u getValue(DemuxCompositeELResolver.java:176) 在 com.sun.faces.el.DemuxCompositeELResolver.getValue(DemuxCompositeELResolver.java:203) 位于org.apache.el.parser.astiIdentifier.getValue(astiIdentifier.java:71) 位于org.apache.el.parser.AstValue.getTarget(AstValue.java:93) org.apache.el.parser.AstValue.invoke(AstValue.java:259)位于 org.apache.el.MethodExpressionImpl.invoke(MethodExpressionImpl.java:273) 在 com.sun.faces.facelets.el.TagMethodExpression.invoke(TagMethodExpression.java:105) 在 javax.faces.component.MethodBindingMethodExpressionAdapter.invoke(MethodBindingMethodExpressionAdapter.java:87) 在 com.sun.faces.application.ActionListenerImpl.processAction(ActionListenerImpl.java:102) 在 org.primefaces.application.DialogActionListener.processAction(DialogActionListener.java:45) 在javax.faces.component.UICommand.broadcast(UICommand.java:315)中 javax.faces.component.UIViewRoot.broadcastEvents(UIViewRoot.java:790) 在 javax.faces.component.UIViewRoot.processApplication(UIViewRoot.java:1282) 在 com.sun.faces.lifecycle.InvokeApplicationPhase.execute(InvokeApplicationPhase.java:81) 位于com.sun.faces.lifecycle.Phase.doPhase(Phase.java:101) com.sun.faces.lifecycle.LifecycleImpl.execute(LifecycleImpl.java:198) 位于javax.faces.webapp.FacesServlet.service(FacesServlet.java:658) org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.primefaces.webapp.filter.FileUploadFilter.doFilter(FileUploadFilter.java:78) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208) 在 org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:2
@Component
@Scope("prototype")
public class DefaultBatchReportService <T extends SingleReportService, I extends ReportInputParam, M extends ReportMeta, MD extends ReportMetaDetail, C extends ReportContent, P extends ReportDao<I , M, MD, C>> {
    @Setter
    private I inputParam;
    @Setter
    private M meta;

    @Autowired
    @Setter
    private T singleReportService;
    @Autowired
    @Setter
    private P reportDao; 
}
@Component
@SpringScopeView
@Getter
@Setter
public class RT001Bean extends BaseBean {
    @Autowired
    private DefaultBatchReportService<RT001Service, RT001_InputParam, RT001_Meta, RT001_Meta.Detail, RT001_Content, RT001Dao> bReportController;

    private RT001_InputParam inputParam;

    public void generateBatchReport() {

        //Start Report Generation
        try {
            bReportController.doSomething(inputParam);
            ....
        } catch (CustomException e) {
            // Print Error Message

    }
}