利用SPring实现bean属性setter方式注入

.问题

JDBCDataSource类封装了管理数据库连接的方法getConnection(),这个方法在执行之前需要数据库连接参数:数据库驱动、连接URL、用户名和密码。


利用Spring实现JDBCDataSource对象的创建,再使用setter注入的方式将数据库连接参数注入给JDBCDataSource。这样就可以正常的调用getConnection()方法获得数据库连接了。


.方案

利用Spring配置文件applicationcontext.xml配置bean,并且setter参数注入JDBCDataSource的连接参数,这样Spring在创建JDBCDataSource对象以后就会自动化的调用setter方法注入数据库连接参数。

applicationcontext.xml配置bean参考代码如下:

<!--setter注入-->
<bean id="datasource" class="org.fwq.dao.JDBCDataSource">
    <property name="driver" value="org.gjt.mm.mysql.Driver"/>
    <property name="url" value="jdbc:mysql://localhost:3306/mysql?useUnicode=true&amp;characterEncoding=utf-8"/>
    <property name="user" value="root"/>
    <property name="pwd" value="root"/>
</bean>

将driver、url、user、pwd注入到Spring的bean



.步骤

步骤一:新建类(JDBCDataSource),导入jar包(mysql jdbc driver)

利用SPring实现bean属性setter方式注入

JDBCDataSource类的源码如下:

package org.fwq.dao;

import java.io.Serializable;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class JDBCDataSource implements Serializable {

    private String driver;
    private String url;
    private String user;
    private String pwd;

    public String getDriver() {
        return driver;
    }

    public void setDriver(String driver) {
        try {
            Class.forName(driver);//注册数据库驱动
            this.driver = driver;
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }

    public void setUrl(String url) {
        this.url = url;
    }

    public String getUrl() {
        return url;
    }

    public void setUser(String user) {
        this.user = user;
    }

    public String getUser() {
        return user;
    }

    public void setPwd(String pwd) {
        this.pwd = pwd;
    }

    public String getPwd() {
        return pwd;
    }

    public Connection getConnection() throws SQLException {
        Connection conn = DriverManager.getConnection(url, user, pwd);
        return conn;
    }

    public void close(Connection conn) {
        if (conn != null) {
            try {
                conn.close();
            } catch (SQLException e) {
                e.printStackTrace();
            }
        }
    }
}


新添加一个测试类Test3和测试方法testJDBCDataSource()

package com.spring;

import org.fwq.dao.JDBCDataSource;
import org.junit.Test;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;

import java.sql.Connection;


public class Test3 {

    @Test
    public void testJDBCDataSource() throws Exception {
        //实例化Spring容器示例
        String config = "applicationcontext.xml";
        ApplicationContext ac = new ClassPathXmlApplicationContext(config);
        //获取JDBCDataSource对象
        JDBCDataSource jd = ac.getBean("datasource", JDBCDataSource.class);
        Connection conn = jd.getConnection();
        System.out.println(conn);

    }
}

如果运行出现下面结果,那就说明setter注入成功了!

利用SPring实现bean属性setter方式注入