gpt4 book ai didi

java - Spring中泛型实例变量的依赖Bean注入(inject)

转载 作者:行者123 更新时间:2023-12-02 02:13:57 26 4
gpt4 key购买 nike

我正在为我的应用程序使用 Spring 4.1.5-RELEASE 和 java 8。在查看类时,需要考虑两种参数化,一种是在类级别,另一种是在类的实例变量中。在依赖注入(inject)上,我在类级别参数化方面没有遇到麻烦(因为我有带有 super() 的构造函数),而实例变量 serviceErrorResponseProcessor 会导致以下错误。如果 serviceErrorResponseProcessor 变量从类和 bean 注入(inject)中删除,我没有看到错误。所以定义通用实例变量是错误的。

类(class):

public class ServiceResponseProcessor implements ResponseProcessor<T, R> {

private ErrorResponseProcessor<Error> serviceErrorResponseProcessor;
private ServiceInfoResponseProcessor serviceInfoResponseProcessor;

// respective getters and setters
}

Bean注入(inject):

<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 注入(inject)的类时,不能在实例变量中使用泛型。

类(class):

public class ServiceResponseProcessor implements ResponseProcessor<T, R> {

private ServiceErrorResponseProcessor serviceErrorResponseProcessor;
private ServiceInfoResponseProcessor serviceInfoResponseProcessor;

// respective getters and setters
}

同时,

ServiceErrorResponseProcessor implements ErrorResponseProcessor<Error>{
// implementation
}

Bean注入(inject):

<bean id="responseProcessor"
class="com.path.ServiceResponseProcessor">
<property name="serviceErrorResponseProcessor" ref="beanServiceErrorResponseProcessor" />
<property name="serviceInfoResponseProcessor" ref="beanServiceInfoResponseProcessor" />

关于java - Spring中泛型实例变量的依赖Bean注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57314147/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com