当前位置: 首页 > news >正文

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

1.前言

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

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注释掉了

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) 的格式

http://www.xdnf.cn/news/1117495.html

相关文章:

  • CentOS 7 升级系统内核级库 glibc 2.40 完整教程
  • 前四天综合总结
  • 事务失效场景@Transactional
  • Vue单文件组件与脚手架工程化开发
  • [特殊字符]使用 Nginx 将 HTTP 重定向到 HTTPS
  • dll文件缺失解决方法
  • SegFix: Model-Agnostic Boundary Refinementfor for Segmentation
  • Linux713 SAMBA;磁盘管理:手动挂载,开机自动挂载,自动挂载
  • 五次方程无根式解的群论证明详解
  • 大模型-量化技术
  • 【设计模式】命令模式 (动作(Action)模式或事务(Transaction)模式)宏命令
  • 【Linux内核模块】模块加载函数--从启动到运行的幕后推手
  • (S4)Efficiently Modeling Long Sequences with Structured State Spaces论文精读(逐段解析)
  • C语言---自定义类型(上)(结构体类型)
  • 20250713-`Seaborn.pairplot` 的使用注意事项
  • 信号量机制,互斥的避免自旋锁的实现方法(操作系统)
  • 应用层协议和JSON的使用
  • 飞算AI使用体验-一种基于项目工程思维的AI-Code思路
  • DVWA | Weak Session IDs 弱会话标识符
  • 【VLLM】大模型本地化部署
  • 当外卖骑手遇上“爽提学院”:一场关于专业的蜕变
  • Vue中的render()函数
  • 封装---优化try..catch错误处理方式
  • 小程序部分pai
  • 【OpenGL ES】手撕一个mini版的Android native渲染框架
  • 深入理解数据库连接池:原理、实现与Druid实战
  • 使用binutils工具分析目标文件(壹)
  • 【网络工程师软考版】计算机组成原理
  • SylixOS 下的中断嵌套
  • Android自定义View的事件分发流程