背景是:
手动创建c3p0数据源,运用spring技术,将代码块中的set方法,通过spring简化代码,实现解耦。
下图展示不使用Spring的代码
@Test
//手动创建 c3p0 数据源(加载配置文件jdbc.properties)
public void test() throws Exception {
ResourceBundle rb = ResourceBundle.getBundle("jdbc");
String driver = rb.getString("jdbc.driver");
String url = rb.getString("jdbc.url");
String username= rb.getString("jdbc.username");
String password = rb.getString("jdbc.password");
//创建数据源对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
dataSource.setDriverClass(driver);
dataSource.setJdbcUrl(url);
dataSource.setUser(username);
dataSource.setPassword(password);
//连接好数据库后获取资源
Connection connection = dataSource.getConnection();
System.out.println(connection);
connection.close();
}
开始步骤:
导入spring坐标,即在pom.xml文件中写入spring-context依赖包
然后在resources文件夹中创建applicationContext.xml文件,命名是任意的,方便辨认,采用这个名字。在bean中
1.ID是自己命名,这里是datasource ,class指的是上面ComboPooledDataSource的全限定名地址,右键点击copy reference。
附上图片
2.填写属性
如图
这里很重要的是property其中的name,指的是set方法后面的字符串,复制过来之后,首字母是大写的改为小写。(我自己改为小写,测试也不会报错)
Name后面的参数可以选择value和ref 这里是普通参数注入选择value,引用注入选择ref
<!--创建bean-->
<bean id="datasource" class="com.mchange.v2.c3p0.ComboPooledDataSource" >
<property name="driverClass" value="com.mysql.jdbc.Driver"></property>
<property name="jdbcUrl" value="jdbc:mysql://localhost:3306/test"></property>
<property name="user" value="root"></property>
<property name="password" value="123456"></property>
</bean>
<!--注入参数-->
到此,applicationContext文件就已经配置好了。
进入测试页面
@Test
//手动spring 容器产生 c3p0 数据源(加载配置文件jdbc.properties)
public void test3() throws Exception {
ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml");
DataSource data = app.getBean(DataSource.class);
Connection connection = data.getConnection();
System.out.println(connection);
connection.close();
}
第一行的代码作用:获取配置文件
第二行的代码作用:获取bean
第三行:获取连接
测试结果: