org.springframework.beans.NotWritablePropertyException:bean类的属性'xxxx'无效:

时间:2016-07-14 20:58:31

标签: java spring-mvc

我是spring框架的新手,并尝试使用spring xml创建一个bean,但我现在正面临异常

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'feedServerLineRead' defined in class path resource [FeedServer.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'feedProcessor' of bean class [workflow.FeedServerLineRead]: Bean property 'feedProcessor' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1361)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:1086)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:517)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:291)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:222)
    at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:288)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:190)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:580)
    at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:728)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:380)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:139)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:83)
    at controller.FeedController.main(FeedController.java:76)
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'feedProcessor' of bean class [workflow.FeedServerLineRead]: Bean property 'feedProcessor' is not writable or has an invalid setter method. Does the parameter type of the setter match the return type of the getter?
    at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:1024)
    at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:900)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:76)
    at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:58)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:1358)
package workflow;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.BlockingQueue;

import org.springframework.jmx.export.annotation.ManagedResource;

import FeedData;
import FeedProcessor;

@ManagedResource(objectName="bean:name=FeedServerLineRead")
public class FeedServerLineRead implements Runnable {

    private FeedProcessor feedProcessor;
    BlockingQueue<String> queue;

    @Override
    public void run() {
        while(true) {
            String sb;
            try {

                sb = queue.take();
                List <FeedData> beanList =  new ArrayList<FeedData>();

                FeedData dataPojo = new FeedData();
                dataPojo.setSide(sb.charAt(60));                                                        
                dataPojo.setProduct(sb.substring(145, 163));                                            
                beanList.add(dataPojo);
                feedProcessor.insertBatch(beanList);

            } catch (InterruptedException ex) {
                break;
            } 
        }
    }


    public FeedServerLineRead(){
        this.queue=null;
    }

    public FeedServerLineRead(BlockingQueue<String> queue) {
        this.queue = queue;
    }

    public FeedProcessor getFeedProcessor() {
        return feedProcessor;
    }

    public void setFeedProcessor(FeedProcessor feedProcessor) {
        this.feedProcessor = feedProcessor;
    }
}



<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:util="http://www.springframework.org/schema/util"
        xmlns:p="http://www.springframework.org/schema/p"
        xmlns:task="http://www.springframework.org/schema/task"
        xsi:schemaLocation="http://www.springframework.org/schema/beans 
            http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
            http://www.springframework.org/schema/util 
            http://www.springframework.org/schema/util/spring-util-3.0.xsd
            http://www.springframework.org/schema/task
            http://www.springframework.org/schema/task/spring-task-3.0.xsd">


    <bean id="feedProcessor" class="processor.FeedProcessor" />

    <bean id="feedServerLineRead" class="workflow.FeedServerLineRead">
        <property name="feedProcessor" ref="feedProcessor" />
    </bean>  
</beans>

1 个答案:

答案 0 :(得分:0)

问题已解决:这是由于使用了不正确的jar。 spring.tx是需要使用的jar,而我使用的是spring.dao