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

来源:互联网 发布:linux shell wait 编辑:程序博客网 时间:2024/06/09 16:40

.问题

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)


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注入成功了!



阅读全文
1 0
原创粉丝点击