提问者:小点点

Spring设定器注入调用混淆


下面是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>

我的问题是如何在这里进行Setter注入,即使Jdbc道类没有任何名为dataSource的属性。那么,如果bean中没有属性,那么为什么要调用setter呢?


共1个答案

匿名用户

这是因为注入是通过setter方法完成的,而不是通过字段名,并且属性名称假定的setter方法名称与Jdbc道类中的实际setter方法名称相匹配。

试着阅读这些文章。

https://www.baeldung.com/spring-xml-injection

https://www.baeldung.com/inversion-control-and-dependency-injection-in-spring