写点什么

【Spring 学习笔记 (七)】Spring 管理第三方 Bean 之管理 Druid 数据源

作者:倔强的牛角
  • 2022 年 6 月 08 日
  • 本文字数:2313 字

    阅读完需:约 8 分钟

【Spring 学习笔记(七)】Spring 管理第三方Bean之管理Druid数据源

写在前面😘

大一电子信息工程新生,请多多关照,希望能在 InfoQ 社区记录自己的学习历程!

【Spring 学习笔记】 系列教程基于 Spring 5.2.10.RELEASE讲解

一、第三方 Bean

下面通过一个案例——spring 管理 Druid 数据源,来学习 Spring 如何 管理第三方 Bean


第三方 Bean,即第三方类,不是自己创建的类。


通常是 jar 包中提供的第三方类,如阿里 druid 连接池中的DruidDataSource类


Spring 管理第三方 Bean 也是通过属性注入(setter 注入或者构造器注入)的方法

二、思路分析

需求:properties 配置文件里有数据库连接信息,spring 来加载配置文件,并使用文件中的信息来完成属性注入。


  1. 在 resources 下创建一个 jdbc.properties(文件名称任意),并将数据库连接信息写入配置文件中

  2. 在 Spring 的配置文件中加载 properties 文件

  3. 使用配置文件中的信息实现属性注入

三、实现步骤

步骤 1:导入 druid 等依赖

pom.xml 文件里添加springdruidmysql驱动的依赖包


<dependencies>    <dependency>        <!--springframework框架-->        <groupId>org.springframework</groupId>        <artifactId>spring-context</artifactId>        <version>5.2.10.RELEASE</version>    </dependency>    <!--Druid连接池-->    <dependency>        <groupId>com.alibaba</groupId>        <artifactId>druid</artifactId>        <version>1.1.16</version>    </dependency>    <!--mysql 驱动-->    <dependency>        <groupId>mysql</groupId>        <artifactId>mysql-connector-java</artifactId>        <version>8.0.28</version>        <scope>runtime</scope>    </dependency></dependencies>
复制代码

步骤 2:准备 properties 配置文件

resources 下创建一个 jdbc.properties 文件,并添加对应的属性键值对


# 注册驱动,可以缺省,会根据url自动识别jdbc.driverClassName=com.mysql.cj.jdbc.Driver# 数据库连接地址jdbc.url=jdbc:mysql://127.0.0.1:3306/db# 数据库管理员名称jdbc.username=root# 数据库密码jdbc.password=123456##初始连接数,默认0jdbc.initialSize=5# 最大连接数,默认8jdbc.maxActive=10# 最小闲置数jdbc.minIdle=10# 获取连接的最大等待时间,单位毫秒jdbc.maxWait=3000
复制代码

步骤 3:开启context命名空间

在 applicationContext.xml 中开启context命名空间,这样才能加载 properties 配置文件


<?xml version="1.0" encoding="UTF-8"?><beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"       xmlns:context="http://www.springframework.org/schema/context"       xsi:schemaLocation="            http://www.springframework.org/schema/beans            http://www.springframework.org/schema/beans/spring-beans.xsd            http://www.springframework.org/schema/context            http://www.springframework.org/schema/context/spring-context.xsd"></beans>
复制代码

步骤 4:加载 properties 配置文件

在配置文件中使用context命名空间下的标签来加载 properties 配置文件。system-properties-mode="NEVER"表示不加载系统的环境变量


<!--加载properties配置文件--><context:property-placeholder location="jdbc.properties" system-properties-mode="NEVER"/>
复制代码

步骤 5:完成属性注入

使用 spring 的 el 表达式${key}来读取 properties 配置文件中的内容并完成属性注入


<!--加载properties配置文件--><context:property-placeholder location="jdbc.properties"/><!--管理第三方Bean:DruidDataSource对象--><bean id="druidDataSource" class="com.alibaba.druid.pool.DruidDataSource">    <property name="driverClassName" value="${jdbc.driverClassName}"/>    <property name="url" value="${jdbc.url}"/>    <property name="username" value="${jdbc.username}"/>    <property name="password" value="${jdbc.password}"/>    <property name="initialSize" value="${jdbc.initialSize}"/>    <property name="maxActive" value="${jdbc.maxActive}"/>    <property name="minIdle" value="${jdbc.minIdle}"/>    <property name="maxWait" value="${jdbc.maxWait}"/></bean>
复制代码

步骤 6:编写运行程序

public static void main(String[] args) throws SQLException {    //获取IoC容器    ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");    //从容器中获取DruidDataSource对象    DruidDataSource druidDataSource = context.getBean("druidDataSource", DruidDataSource.class);    //获取数据库链接    DruidPooledConnection connection = druidDataSource.getConnection();    //打印数据源信息    System.out.println(druidDataSource);}
复制代码


运行结果如下👇


可以看到数据库已经成功连接了🚩


四、加载多个 properties 文件

  • 一个项目里可能有多个 properties 文件,下面介绍 spring 如何加载多个 properties 文件


<!--方式一 --><context:property-placeholder location="jdbc.properties,jdbc2.properties" system-properties-mode="NEVER"/><!--方式二--><context:property-placeholder location="*.properties" system-properties-mode="NEVER"/><!--方式三 --><context:property-placeholder location="classpath:*.properties" system-properties-mode="NEVER"/><!--方式四--><context:property-placeholder location="classpath*:*.properties" system-properties-mode="NEVER"/>
复制代码


写在后面🍻

感谢观看啦✨

有什么不足,欢迎指出哦💖

发布于: 刚刚阅读数: 5
用户头像

把学问造就,还期身健行优。 2022.06.02 加入

大一在读,电子信息工程专业。 希望在InfoQ写作社区记录自己的学习历程!

评论

发布
暂无评论
【Spring 学习笔记(七)】Spring 管理第三方Bean之管理Druid数据源_Java_倔强的牛角_InfoQ写作社区