sping第一个小程序报错bean property "helloword" is not writable 问题分析
2017-07-22 20:17
316 查看
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的变量名称一致,才不会报上面的错。
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的变量名称一致,才不会报上面的错。
相关文章推荐
- 【wxPython】wxPython第一个程序:"Hello,World!!!"
- spring boot helloword程序遇到的问题
- 我的第一个Qt程序:使用Qt creator和Qt designer完成"HelloWorld"和计算圆面积的程序设计
- 我的第一个Qt程序:使用Qt creator和Qt designer完成"HelloWorld"和计算圆面积的程序设计
- 0--我的串口发送"hello word"程序
- 第一个java程序"HelloWorld"
- Python学习第一个程序:python第一个程序hello.py提示出现File "<stdin>",line 1错误
- ios开发入门-我的第一个ios程序 helloword
- 第一个Python程序hello.py提示出现File "<stdin>",line 1错误
- word "程序发送命令时出现问题”。
- Android第一个程序"HelloWorld"
- 初学Android,"Hello World" 第一个Android程序(一)
- Spring事务管理,"'程序报错'但'事务不回滚'?"问题分析(SSM实例)
- 第一个程序:"Hello World"
- 我的第一个java程序:HelloWord
- 开启苹果app学习之旅:第一个小程序helloWord
- J2ME中The MIDlet suite was not found.问题--关于第一个HELLO程序
- "Hello World", 第一个Haskell程序
- Android Studio HelloWord 测试程序在Android5.1真机上运行异常分析
- Android Studio HelloWord 测试程序在Android5.1真机上运行异常分析