关于学习spring中Set属性注入的一些疑问

关于学习spring中Set属性注入的一些疑问

本人在刚开始学习spring框架的时候,对于IOC中的属性注入一直有一个疑惑。那就是在同一类中相同类型的属性,spring是如何进行识别并注入的呢?
在网上找了大部分资料,主要谈两种注入方法:
1.set
2.构造函数
对于第二种方法由于xml文件中可以设置index,所有没什么疑问。主要是第一种方法。其xml文件中属性配置最常用的:

<property name="message" value="你好"></property>

而其中name属性值(message)具体与什么匹配,查找了网上大量的资料,基本上都是说匹配属性名字的。但本人在测试中发现并不是这样。
即使该属性值与属性名字并不对应,也可以正常编译!

package com.mc.app.WebApp;

import javax.swing.Spring;

public class Helloworld {
	private String mess;
	public void setMessage(String message) {
		this.mess=message;
	}

	
	public String getMessage(){
		return this.mess;
	}
	
	public void printMessage() {
		System.out.println("Your Message:"+mess);
	}
}

我这里属性名字为mess,但它确实能正常编译。
在检查后发现,xml文件中的name属性值其实是对应set方法名的!spring实际上是通过name值找到对应的set方法并执行,即该方法名为set+(name属性值),在通过方法做出相应的行为,如给属性赋值。

package com.mc.app.WebApp;

import javax.swing.Spring;

public class Helloworld {
	private String mess;
	public void setMessage(String message) {
		this.mess=null;
	}

	
	public String getMessage(){
		return this.mess;
	}
	
	public void printMessage() {
		System.out.println("Your Message:"+mess);
	}
}

xml文件没变,输出为:Your Message:null
所以说xml中的value是传递给set方法中参数的,而不是直接给属性值的。
结论:同一类中不管你有多少类型属性,不管你属性名,它只识别名字为:set+(xml文件中name的值)的方法并执行。如果没找到,则报错。
值得注意的是:
1.set必须小写。
2.name值首字母不区分大小写,其他严格区分。如setMessage()\setmessage()都可以正常执行,而Setmessage()或者setmessAge()都不能正常执行。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值