java - Spring中通用实例变量的依赖Bean注入
问题描述
我正在为我的应用程序使用 Spring 4.1.5-RELEASE 和 java 8。在查看类时,需要考虑 2 个参数化,一个在类级别,另一个在类的实例变量。在依赖注入时,我在类级别参数化方面没有问题(因为我有带有 super() 的构造函数),而实例变量 serviceErrorResponseProcessor 会导致以下错误。如果从类和 bean 注入中删除 serviceErrorResponseProcessor 变量,我没有看到错误。所以在定义泛型实例变量时出了点问题。
班级:
public class ServiceResponseProcessor implements ResponseProcessor<T, R> {
private ErrorResponseProcessor<Error> serviceErrorResponseProcessor;
private ServiceInfoResponseProcessor serviceInfoResponseProcessor;
// respective getters and setters
}
豆子注入:
<bean id="responseProcessor"
class="com.path.ServiceResponseProcessor">
<property name="serviceErrorResponseProcessor" ref="beanServiceErrorResponseProcessor" />
<property name="serviceInfoResponseProcessor" ref="beanServiceInfoResponseProcessor" />
</bean>
<bean id="beanServiceErrorResponseProcessor"
class="com.path.processor.ErrorResponseProcessor"/>
<bean id="beanServiceInfoResponseProcessor"
class="com.path.processor.ServiceInfoResponseProcessor"/>
错误:
Error creating bean with name 'responseProcessor' defined in class path resource [config/bean-dependency.xml]:
Initialization of bean failed; nested exception is java.lang.reflect.MalformedParameterizedTypeException
at com.path.ServiceResponseProcessor.testResponseProcessor(ServiceResponseProcessor.java:326)
at com.path.ServiceResponseProcessor.testSteps(ServiceResponseProcessor.java:276)
Caused by: java.lang.reflect.MalformedParameterizedTypeException
at com.path.ServiceResponseProcessor.testResponseProcessor(ServiceResponseProcessor.java:326)
at com.path.ServiceResponseProcessor.testSteps(ServiceResponseProcessor.java:276)
解决方案
我发现了一些使用 spring 4.1.5-RELEASE 对我有用的东西,那就是当它用于 bean 注入的类时,不能在实例变量中使用泛型。
班级:
public class ServiceResponseProcessor implements ResponseProcessor<T, R> {
private ServiceErrorResponseProcessor serviceErrorResponseProcessor;
private ServiceInfoResponseProcessor serviceInfoResponseProcessor;
// respective getters and setters
}
尽管,
ServiceErrorResponseProcessor implements ErrorResponseProcessor<Error>{
// implementation
}
豆类注入:
<bean id="responseProcessor"
class="com.path.ServiceResponseProcessor">
<property name="serviceErrorResponseProcessor" ref="beanServiceErrorResponseProcessor" />
<property name="serviceInfoResponseProcessor" ref="beanServiceInfoResponseProcessor" />
推荐阅读
- typescript - 在 mat-accordion 中实现 ngx-owl-carousel-o 的问题
- product - 从愿望清单中删除禁用的产品
- java - 访问 TextView 中第二行的开头
- cuda - Nvidia Hyper Q 和 Nvidia Streams 有什么区别?
- javascript - 将对象数组中两个属性的唯一值存储到单个数组中
- python - Ruby 的 array.pack() 和 unpack() 的 Python 版本?
- vue.js - 使用 GraphQL 在 Nuxtjs 中检索 Prismic 切片内容在项目中不起作用
- android - 如何在 kotlin(语言环境)中更改语言
- r - 在闪亮的应用程序中调整导航栏菜单的高度
- android - NestedScrollView 内的 RecyclerView 在 NotifyDataSetChanged 后继续滚动 - 问题