spring--xml注入时bean的property属性

1.前言

大家对于下面的代码肯定不陌生

java 复制代码
public class MyBean {
    public String value;
    public void setValue(String value) {
          this.value= value;
    }
}
//----------------------xml--------------------
<bean id="myBean" class="com.example.MyBean">
    <property name="value" value="Hello"/> 
</bean>

这段代码表示 Spring 框架中通过 XML 配置文件进行依赖注入

2.关于name

那么 <property name="value" value="Hello"/> 中name的值,代表的是要注入属性名是value的值么?

答案是并不是,大家观察下面的代码,我把value注释掉了

java 复制代码
public class MyBean {
    //public String value;
    public void setValue(String value) {
          System.out.print(value);
    }
}
//----------------------xml--------------------
<bean id="myBean" class="com.example.MyBean">
    <property name="value" value="Hello"/> 
</bean>

程序依然可以打印"Hello",这个问题涉及到 Spring 的核心机制 - 基于 setter 的依赖注入不是直接操作字段,而是调用 setter 方法

Spring 的处理流程

  • 解析 <property name="value" value="Hello"/>

  • 将属性名[name的值value]转换为方法名:set + 首字母大写的属性名setValue

  • 在目标类及其父类中查找 setValue() 方法

  • 找到 MyBean.setValue(value)

  • 调用该方法并传入 value

最后Spring 要求 setter 方法必须符合 setXxx(Type value) 的格式

相关推荐
Full Stack Developme5 分钟前
java.nio 包详解
java·python·nio
零千叶22 分钟前
【面试】Java JVM 调优面试手册
java·开发语言·jvm
代码充电宝31 分钟前
LeetCode 算法题【简单】290. 单词规律
java·算法·leetcode·职场和发展·哈希表
li37149089035 分钟前
nginx报400bad request 请求头过大异常处理
java·运维·nginx
摇滚侠39 分钟前
Spring Boot 项目, idea 控制台日志设置彩色
java·spring boot·intellij-idea
Aevget1 小时前
「Java EE开发指南」用MyEclipse开发的EJB开发工具(二)
java·ide·java-ee·eclipse·myeclipse
黄昏晓x1 小时前
C++----多态
java·jvm·c++
Brookty2 小时前
【算法】前缀和
java·学习·算法·前缀和·动态规划
少许极端2 小时前
算法奇妙屋(七)-字符串操作
java·开发语言·数据结构·算法·字符串操作
懒羊羊不懒@2 小时前
Java基础语法—字面量、变量详解、存储数据原理
java·开发语言