Java setter如何在Spring框架中工作?
我是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
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>