3、Spring配置数据源
1.1、spring:数据源,连接池的作用
-
数据源(连接池)是提高程序性能
-
如出现的事先实例化数据源,初始化部分连接资源使用
-
连接资源时从数据源中获取
-
使用完毕后将连接资源归还给数据源
-
2、Spring配置数据源-开发步骤
2.1、导入数据源的坐标和数据库的驱动坐标
2.2、创建我们数据源的对象
2.3、设置数据源的基本连接数据(root,psw,最大连接数...)
2.4、使用数据源获取链接资源和归还资源
3、Spring配置数据源--准备开发
3.1、导入需要的依赖环境
mysql、jdbc、c3p0数据源、druid数据源、单元测试类
<dependencies>
<!-- 导入Spring的依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.3.16</version>
</dependency>
<!-- 导入mysql数据库 -->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.38</version>
</dependency>
<!-- c3p0数据源 -->
<dependency>
<groupId>c3p0</groupId>
<artifactId>c3p0</artifactId>
<version>0.9.1.2</version>
</dependency>
<!-- 这个不晓得 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.10</version>
</dependency>
<!-- 单元测试类 -->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.13</version>
</dependency>
</dependencies>
3.2、配置数据源连接数据库
// 测试数据源连接mysql数据库
public class c3p0Test {
@Test
public void testc3p0() throws PropertyVetoException, SQLException {
// 创建数据源的对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 配置数据源
// 配置驱动
dataSource.setDriverClass("com.mysql.jdbc.Driver");
// 设置url地址
dataSource.setJdbcUrl("jdbc:mysql://localhost:3306/week9");
// 设置我的账号和密码
dataSource.setUser("root");
dataSource.setPassword("010115");
Connection connection = dataSource.getConnection();
// 打印一下地址
System.out.println("数据库连接成功!"+connection);
// 归还数据源
connection.close();
}
}
打印结果
3.3、弊端
-
这样使用外部源的数据势必会有很强的耦合性,如果后期程序需要修改,就需要从源码的位置开始,非常的麻烦,直接耦合死了
-
所以我们可以采用配置文件的方式将这些外部源的数据配置到其中,如果需要修改和读取的时候加载这个配置文件即可
3.4、创建配置文件--解耦合(jdbc.properties)
jdbc.driver = com.mysql.jdbc.Driver
jdbc.url = jdbc:mysql://localhost:3306/week9
jdbc.user = root
jdbc.password = 010115
3.5、读取配置文件,配置数据源信息
@Test // 配置文件的方式存值取值
public void newc3P0() throws PropertyVetoException, SQLException {
// 加载配置文件--参数是我们配置文件的前缀(jdbc.properties)
ResourceBundle db = ResourceBundle.getBundle("jdbc");
// 读取参数--getString()
String driver = db.getString("jdbc.driver");
String url = db.getString("jdbc.url");
String user = db.getString("jdbc.user");
String password = db.getString("jdbc.password");
// 读取到了以后赋值进去
// 创建数据源的对象
ComboPooledDataSource dataSource = new ComboPooledDataSource();
// 配置数据源
// 配置驱动
dataSource.setDriverClass(driver);
// 设置url地址
dataSource.setJdbcUrl(url);
// 设置我的账号和密码
dataSource.setUser(user);
dataSource.setPassword(password);
Connection connection = dataSource.getConnection();
// 打印一下地址
System.out.println("数据库连接成功!"+connection);
// 归还数据源
connection.close();
}
4、Spring配置文件--将数据源对象的创建方式交给Spring来创建
4.1、创建我们的配置文件xml
-
数据源对象本身我们是引入的第三方,所以我们直接在配置文件,通过Bean在容器中注册这个对象就行
-
不需要dao,service,Controller层的创建
-
第三方引用关于class全路径名的获取
-
-
<!-- 外部文件的全路径名获取- --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置属性 --> <!-- 驱动 --> <property name="driverClass" value="com.mysql.jdbc.Driver"></property> <!-- url --> <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/week9"></property> <!-- 用户名 --> <property name="user" value="root"></property> <!-- 密码 --> <property name="password" value="010115"></property> </bean>
4.2、创建测试的方法进行测试
-
// 通过Spring容器创建我们的ComboPooledDataSource对象 @Test public void SpringJDBCTest() throws SQLException { // 加载配置文件获取到我们的ComboPooledDataSource对象 ApplicationContext app = new ClassPathXmlApplicationContext("applicationContext.xml"); // getBean获取到容器中的对象 ComboPooledDataSource dataSource = app.getBean(ComboPooledDataSource.class); Connection connection = dataSource.getConnection(); // 打印一下地址 System.out.println(connection); }
4.3、些许的问题,还是有耦合性,怎么解决?
5、Spring配置文件--xml读取properties的信息
将我们properties配置文件注入到我们的xml文件当中
5.1、引入context命名空间和约束路径
-
命名空间:xmlns:context="http://www.springframework.org/schema/context"
-
约束路径:
-
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd
-
5.2、引入properties配置文件
-
classpath:类加载路径下(resources)的jdbc.properties
<!-- 属性加载器-property-placeholder -->
<context:property-placeholder location="classpath:jdbc.properties"/>
-
将properties的值注入到Bean对象中
-
<!-- 如何将properties的值放在value中- EL表达式 --> <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource"> <!-- 配置属性 --> <!-- 驱动 --> <property name="driverClass" value="${jdbc.driver}"></property> <!-- url --> <property name="jdbcUrl" value="${jdbc.url}"></property> <!-- 用户名 --> <property name="user" value="${jdbc.user}"></property> <!-- 密码 --> <property name="password" value="${jdbc.password}"></property> </bean>
【推荐】还在用 ECharts 开发大屏?试试这款永久免费的开源 BI 工具!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 后端思维之高并发处理方案
· 理解Rust引用及其生命周期标识(下)
· 从二进制到误差:逐行拆解C语言浮点运算中的4008175468544之谜
· .NET制作智能桌面机器人:结合BotSharp智能体框架开发语音交互
· 软件产品开发中常见的10个问题及处理方法
· 后端思维之高并发处理方案
· 千万级大表的优化技巧
· 在 VS Code 中,一键安装 MCP Server!
· 10年+ .NET Coder 心语 ── 继承的思维:从思维模式到架构设计的深度解析
· 上周热点回顾(3.24-3.30)