spring - spring setter 注入调用混淆
问题描述
以下是 Spring-JDBC 上的 Spring 参考文档中的代码片段
https://docs.spring.io/spring-framework/docs/3.0.x/spring-framework-reference/html/jdbc.html
public class JdbcDao {
private JdbcTemplate jdbcTemplate;
public void setDataSource(DataSource dataSource) {
System.out.println("inside the setDatasource");
this.jdbcTemplate = new JdbcTemplate(dataSource);
}
XML 配置文件入口为::
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" destroy-method="close">
<property name="driverClassName" value="${jdbc.driverClassName}"/>
<property name="url" value="${jdbc.url}"/>
<property name="username" value="${jdbc.username}"/>
<property name="password" value="${jdbc.password}"/>
</bean>
<bean id="jdbcDao" class="learning.spring.dao.JdbcDao">
<property name="**dataSource**" ref="dataSource"/>
</bean>
我的问题是即使 JdbcDao 类没有任何名称为 dataSource 的属性,Setter 注入如何发生在这里。因此,如果 bean 中没有属性,那么 setter 是如何被调用的呢?
解决方案
这是因为注入是通过 setter 方法完成的,而不是通过字段名称完成的,并且属性名称假定的 setter 方法名称与JdbcDao
类中的实际 setter 方法名称匹配。
尝试阅读这些文章。
https://www.baeldung.com/spring-xml-injection
https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring
推荐阅读
- c++ - vector 被 push_back 函数覆盖
- python - Python - 读取文件并保存为数组
- asp.net - Asp net core 2.2,更新用户名不起作用
- go - 使用 Golang、JSON 和 JavaScript 从 SQL 数据库动态显示数据
- excel - 获取供应商名称,仅使用 Excel 公式输入供应商 ID
- javascript - 构建时出现“HTMLImageElement”类型不存在“属性解码”错误
- javafx - JavaFX:如何在具有阴影效果的舞台上正确滑动窗格?
- csv - AWK 解析 CSV,从单元格中提取子字符串并添加具有提取值的新列
- javascript - _co.photo 是未定义的控制台错误和错误上下文,但代码按预期工作
- docker - 在 docker 下安装 vue/cliapp 时出错