Java setter如何在Spring框架中工作?

Java setter如何在Spring框架中工作?,java,spring,spring-mvc,setter,getter-setter,Java,Spring,Spring Mvc,Setter,Getter Setter,我是spring框架的新手。实际上,我在用弹簧做一个实验 看看这个HelloWorld.java: public class HelloWorld { private String messageee; public void setMessage(String messageee){ this.messageee=messageee; } public void show(){ System.out.println("mes

我是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>
但是当我把名字命名为
message
时。它运行成功。但是我没有任何消息的方法,也没有任何类似名称的变量。那么,
setter
实际上是如何工作的呢?请你详细说明一下好吗


谢谢你的帮助

首先,您将字段与属性混为一谈-applicationContext.xml中的属性名称也错误(应该是
messageee

您需要将
@Autowired
注释与以下内容一起使用:

1) 字段,即
messageee

2) 设置器,即
setMessage()

如果您在想“那是什么!!?”,请阅读Spring与Bean的基本特性,以及Spring如何能够使用POJO(普通的旧Java对象)并使用IoC框架配置它们。阅读关于@Autowired的文章-

那么你应该对这个很满意:

<bean id="helloWorld" class="com.springframework.HelloWorld">
    <property name="message" value="Hello.. This is Spring Framework example."></property>
</bean>

顺便说一句,通过使用非常基本的Java材料来研究Spring的好方法……祝你好运

将字段(或实例变量)与属性混淆

属性是来自JavaBeans规范的一个术语。bean的属性
foo
是可以使用名为
getFoo()
的getter方法访问的数据(对于布尔值,可以使用
isFoo()
)和/或使用名为
setFoo()
的setter方法进行设置

这些方法在内部做什么,无论它们是否获取/设置变量,变量是否也被命名为foo或其他任何东西,都是完全无关的。重要的是getter/setter的名称


因此,当您定义bean并告诉Spring设置名为message的属性时,Spring将寻找一个名为
setMessage()
的方法。它不关心bean类的私有字段

Spring IoC容器还支持setter注入,这是Spring中依赖项注入的首选方法。Setter注入使用类文件中的set*方法来获取在springxml配置中可配置的属性名称

从配置的角度来看,setter注入更容易阅读,因为要设置的属性名与被注入的值一起被指定为bean的属性


为了确定属性名称,Spring遵循。

您的意思是
@Autowired
?是。。你真的明白我的意思了!!。。因此,当我将属性命名为
message
时,Spring将寻找一个名为
setMessage()
的方法。。它们是通过使用这种感觉自动连线的吗?。。这就是我们所说的
Ioc容器
auto-wired
Spring的功能?我不明白你在问什么。自动连接只是让Spring通过类型和注释发现bean依赖,而不是用XML定义所有内容。。我是一名学生!。。你知道吗,当我使用
setFoo(stringmessageee)
时。。bean文件开始嘲笑错误。。但是当我将我的属性名更改为
foo
时。最后,它停止给出这些错误
<bean id="helloWorld" class="com.springframework.HelloWorld">
    <property name="message" value="Hello.. This is Spring Framework example."></property>
</bean>