1.前言
大家对于下面的代码肯定不陌生
javapublic 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注释掉了
javapublic 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)的格式
spring--xml注入时bean的property属性
你我约定有三2025-07-14 13:56
相关推荐
晨曦中的暮雨7 小时前
限流算法——固定窗口、滑动窗口、漏桶、令牌桶文丑颜不良啊8 小时前
LeetCode876~900题目解析aloha_7899 小时前
Java 基础、集合、异常与 JUnit 5 速查CarIise9 小时前
SpringMVC 异常处理与拦截器知守观9 小时前
设计模式实战:从真实老项目中看标准模板方法与工厂的落地独隅9 小时前
Claude API 实战教程:从入门到完整项目Wang's Blog10 小时前
Java 项目实战: 交友项目 - 圈子功能实现:总结SL_staff10 小时前
JVS私有化文档系统上线避坑指南:5大运维与业务协同断点及检测加固实践FinelyYang11 小时前
考试系统简答题 AI 阅卷:覆盖度驱动、异步评分与人机协同落地实践hhhjhl11 小时前
Yup 跨端三方库仓颉适配全流程