gpt4 book ai didi

java - Spring:NotWritablePropertyException

转载 作者:行者123 更新时间:2023-12-02 05:41:08 24 4
gpt4 key购买 nike

applicationContext

<bean id="contentRegisteringBean" parent="abstractRegisteringBean" lazy-init="false">
<property name="processor">
<bean class="com.somepackage.ContentService$Processor"/>
</property>
</bean>

<bean id="abstractRegisteringBean" class="test.spring.MockFactoryBean">
<property name="type" value="com.somepackage.ProcessorRegisteringBeanImpl"/>
</bean>

ProcessorRegisteringBeanImpl

public class ProcessorRegisteringBeanImpl {
private Processor mProcessor;


public Processor getProcessor() {
return mProcessor;
}

public void setProcessor(final Processor processor) {
mProcessor = processor;
}
}

MockFactoryBean.java

public class MockFactoryBean<T> implements FactoryBean<T> {
private Class<T> type;

public void setType(Class<T> type) {
this.type = type;
}

@Override
public T getObject() throws Exception {
return Mockito.mock(type);
}

@Override
public Class<T> getObjectType() {
return type;
}

@Override
public boolean isSingleton() {
return true;
}

}

异常(exception):

org.springframework.beans.NotWritablePropertyException: Invalid property 'processor' of bean class [test.spring.MockFactoryBean]: Bean property 'processor' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?

最佳答案

当您声明 FactoryBean 时,Spring 希望您配置 FactoryBean 的属性,而不是它创建的对象的属性。

请尝试以下操作:

<bean id="contentRegisteringBean" parent="abstractRegisteringBean" lazy-init="false">
<!-- Define concrete class to pass to Mockito.mock() -->
<constructor-arg value = "com.somepackage.ProcessorRegisteringBeanImpl" />

<property name="processor">
<bean class="com.somepackage.ContentService$Processor"/>
</property>
</bean>

<!-- Abstract definition of beans created using Mockito.mock() -->
<bean id="abstractRegisteringBean" abstract = "true"
class="org.mockito.Mockito" factory-method = "mock">
</bean>

关于java - Spring:NotWritablePropertyException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24511957/

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