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