🍓系列专栏:Spring系列专栏
🍉个人主页:个人主页
目录
一、案例:数据源对象管理
1.环境准备
2.实现Druid管理
3.实现C3P0管理
二、加载properties文件
1.第三方bean属性优化
2.读取单个属性
3.注意事项
三、核心容器
1.环境准备
2.容器
1.容器的创建方式
2.Bean的三种获取方式
3.容器类层次结构
4.BeanFactory的使用
3.核心容器总结
1.容器相关
2.bean相关
3.依赖注入相关
四、图书推荐
一、案例:数据源对象管理
在这一节中,我们将通过一个案例来学习下对于第三方bean该如何进行配置管理。 以后我们会用到很多第三方的bean,本次案例将使用咱们前面提到过的数据源Druid(德鲁伊)和C3P0来配置学习下。
1.环境准备
- 创建一个Maven项目
- pom.xml添加依赖
4.0.0
com.itheima
spring_09_datasource
1.0-SNAPSHOT
org.springframework
spring-context
5.2.10.RELEASE
com.alibaba
druid
1.1.16
c3p0
c3p0
0.9.1.2
mysql
mysql-connector-java
5.1.47
- resources下添加spring的配置文件applicationContext.xml
- 编写一个运行类App
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new
ClassPathXmlApplicationContext("applicationContext.xml");
}
}
2.实现Druid管理
思路分析
需求
:
使用
Spring
的
IOC
容器来管理
Druid
连接池对象1.
使用第三方的技术,需要在
pom.xml
添加依赖【前面已导入】2.
在配置文件中将【第三方的类】制作成一个
bean
,让
IOC
容器进行管理3.
数据库连接需要基础的四要素
驱动
、
连接
、
用户名
和
密码
,【如何注入】到对应的
bean
中4.
从
IOC
容器中获取对应的
bean
对象,将其打印到控制台查看结果
步骤1:配置第三方bean
在applicationContext.xml配置文件中添加DruidDataSource的配置
说明
:
:
driverClassName:
数据库驱动
数据库驱动
url:
数据库连接地址
数据库连接地址
username:
数据库连接用户名
数据库连接用户名
password:
数据库连接密码
数据库连接密码
数据库连接的四要素要和自己使用的数据库信息一致。
步骤2
:
从
IOC
容器中获取对应的
bean
对象
:
从
IOC
容器中获取对应的
bean
对象
public class App {
public static void main(String[] args) {
ApplicationContext ctx = new ClassPathXmlApplicationContext("applicationContext.xml");
DataSource dataSource = (DataSource) ctx.getBean("dataSource");
System.out.println(dataSource);
}
}
做完案例后,我们可以将刚才思考的两个问题答案说下
:
:
- 第三方的类指的是什么?
DruidDataSource
- 如何注入数据库连接四要素?
setter注入
3.实现C3P0管理
完成了
DruidDataSource
的管理,接下来我们再来加深下练习,这次我们来管理
C3P0
数据源,具体的实现步骤是什么呢?
DruidDataSource
的管理,接下来我们再来加深下练习,这次我们来管理
C3P0
数据源,具体的实现步骤是什么呢?
步骤1
:
配置第三方
bean
:
配置第三方
bean
在
applicationContext.xml
配置文件中添加配置
applicationContext.xml
配置文件中添加配置
注意
:
:
- ComboPooledDataSource的属性是通过setter方式进行注入
- 想注入属性就需要在ComboPooledDataSource类或其上层类中有提供属性对应的setter方法
- C3P0的四个属性和Druid的四个属性是不一样的
运行程序
二、加载properties文件
上节中我们已经完成两个数据源
druid
和
C3P0
的配置,但是其中包含了一些问题,我们来分析下
:
druid
和
C3P0
的配置,但是其中包含了一些问题,我们来分析下
:
- 这两个数据源中都使用到了一些固定的常量如数据库连接四要素,把这些值写在Spring的配置文件中不利于后期维护
- 需要将这些值提取到一个外部的properties配置文件中
- Spring框架如何从配置文件中读取属性值来配置就是接下来要解决的问题。
1.第三方bean属性优化
实现思路
需求
:
将数据库连接四要素提取到
properties
配置文件,
spring
来加载配置信息并使用这些信息来完成属性注入。1.
在
resources
下创建一个
jdbc.properties(
文件的名称可以任意
)5
2.
将数据库连接四要素配置到配置文件中3.
在
Spring
的配置文件中加载
properties
文件4.
使用加载到的值实现属性注入其中第
3
,
4
步骤是需要大家重点关注,具体是如何实现。
实现步骤
步骤
1:
准备
properties
配置文件
1:
准备
properties
配置文件
resources
下创建一个
jdbc.properties
文件
,
并添加对应的属性键值对
下创建一个
jdbc.properties
文件
,
并添加对应的属性键值对
jdbc.driver=com.mysql.jdbc.Driver
jdbc.url=jdbc:mysql://127.0.0.1:3306/spring_db
jdbc.username=root
jdbc.password=root
步骤
2:
开启
context
命名空间
2:
开启
context
命名空间
在
applicationContext.xml
中开
context
命名空间
applicationContext.xml
中开
context
命名空间
步骤
3:
加载
properties
配置文件
在配置文件中使用
context
命名空间下的标签来加载
properties
配置文件
context
命名空间下的标签来加载
properties
配置文件
步骤
4:
完成属性注入
4:
完成属性注入
使用
${key}
来读取
properties
配置文件中的内容并完成属性注入
${key}
来读取
properties
配置文件中的内容并完成属性注入
至此,读取外部
properties
配置文件中的内容就已经完成。
properties
配置文件中的内容就已经完成。
2.读取单个属性
实现思路
对于上面的案例,效果不是很明显,我们可以换个案例来演示下:
需求
:
从
properties
配置文件中读取
key
为
name
的值,并将其注入到
BookDao
中并在
save
方法中进行打印。1.
在项目中添加
BookDao
和
BookDaoImpl
类2.
为
BookDaoImpl
添加一个
name
属性并提供
setter
方法3.
在
jdbc.properties
中添加数据注入到
bookDao
中打印方便查询结果4.
在
applicationContext.xml
添加配置完成配置文件加载、属性注入
(${key})