sping第一个小程序报错bean property "helloword" is not writable 问题分析

来源:互联网 发布:离线写作软件 编辑:程序博客网 时间:2024/06/10 23:21
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'HelloBean' defined in class path resource [beans-config.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'helloword' of bean class [HelloBean]: Bean property 'helloword' is not writable or has an invalid setter method. Did you mean 'helloWord'?
Caused by: org.springframework.beans.NotWritablePropertyException: Invalid property 'helloword' of bean class [HelloBean]: Bean property 'helloword' is not writable or has an invalid setter method. Did you mean 'helloWord'?
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:751)
at org.springframework.beans.BeanWrapperImpl.setPropertyValue(BeanWrapperImpl.java:608)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValue(AbstractPropertyAccessor.java:49)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:74)
at org.springframework.beans.AbstractPropertyAccessor.setPropertyValues(AbstractPropertyAccessor.java:57)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyPropertyValues(AbstractAutowireCapableBeanFactory.java:970)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.populateBean(AbstractAutowireCapableBeanFactory.java:729)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:416)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)

at SpringDemo.main(SpringDemo.java:15)


源码:beans-config.xml

<bean id="HelloBean"
class="HelloBean">
<property name="helloword">
<value>Hello!</value>
</property>
</bean>

Helloword.java::

public class HelloBean {

private String helloWord;


public String getHelloWord() {
return helloWord;
}


public void setHelloWord(String helloWord) {
this.helloWord = helloWord;
}
}

SpringDemo.java::

public class SpringDemo {


public static void main (String[] args){

Resource rs = new ClassPathResource("beans-config.xml");

BeanFactory factory = new XmlBeanFactory(rs);

HelloBean hello = (HelloBean)factory.getBean("HelloBean"); 

System.out.println(hello.getHelloWord());
}

}

问题分析:SpringDemo.java  通过BeanFactory读取配置文件,HelloBean的实例依赖于Spring对象,通过setter所保留的接口,使用setter injection完成依赖注入,完成依赖的关系注入;BeanFactory读取Bean的配置设置并完成关系维护后,通过getbean()方法指定Bean的名称来获得Bean实例;需要注意的是:bean-config.xml里的 propery的name属性的值 helloword,需要与HelloBean.java的变量名称一致,才不会报上面的错。

阅读全文
0 0
原创粉丝点击