【发布时间】:2015-01-25 14:18:15
【问题描述】:
我是 spring 框架的新手。实际上,我实际上是在用spring 做一个实验。
看看这个HelloWorld.java:
public class HelloWorld {
private String messageee;
public void setMessage(String messageee){
this.messageee=messageee;
}
public void show(){
System.out.println("message: "+messageee);
}
}
您在这个程序中看到,我有一个在外部声明为private 的变量命名为messageee,而下一个使用setter 参数化的变量命名为messageee。您会看到两者具有相同的名称。
好的.. 现在看看这个 bean 文件:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">
<bean id="helloWorld" class="com.springframework.HelloWorld">
<property name="message" value="Hello.. This is Spring Framework example."></property>
</bean>
</beans>
在这里您可以看到bean 标记的内部。我已将属性名称声明为message。我不明白,当我将名称命名为 messageee 时,它给出的错误如下:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'helloWorld' defined in class path resource [beans.xml]: Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'messageee' of bean class [com.springframework.HelloWorld]: Bean property 'messageee' is not writable or has an invalid setter method. Did you mean 'message'?
但是当我将名称命名为 message 时。它运行成功。但是我没有任何消息的方法或任何具有这个相似名称的变量。那么,setter 实际上是如何工作的呢?能详细点吗?
我们将不胜感激!
【问题讨论】:
标签: java spring spring-mvc setter getter-setter