写在前面😘
大一电子信息工程新生,请多多关照,希望能在 InfoQ 社区记录自己的学习历程!
【Spring 学习笔记】 系列教程基于 Spring 5.2.10.RELEASE
讲解
一、第三方 Bean
下面通过一个案例——spring 管理 Druid 数据源,来学习 Spring 如何 管理第三方 Bean
第三方 Bean,即第三方类,不是自己创建的类。
通常是 jar 包中提供的第三方类,如阿里 druid 连接池中的DruidDataSource类
Spring 管理第三方 Bean 也是通过属性注入(setter 注入或者构造器注入)的方法
二、思路分析
需求:properties 配置文件里有数据库连接信息,spring 来加载配置文件,并使用文件中的信息来完成属性注入。
在 resources 下创建一个 jdbc.properties(文件名称任意),并将数据库连接信息写入配置文件中
在 Spring 的配置文件中加载 properties 文件
使用配置文件中的信息实现属性注入
三、实现步骤
步骤 1:导入 druid 等依赖
在 pom.xml 文件里添加spring
、druid
、mysql驱动
的依赖包
<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
##初始连接数,默认0
jdbc.initialSize=5
# 最大连接数,默认8
jdbc.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 文件
<!--方式一 -->
<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"/>
复制代码
写在后面🍻
感谢观看啦✨
有什么不足,欢迎指出哦💖
评论