Spring概念
-
spring是开源的轻量级的框架
-
spring核心主要两部分:
-
aop 面向切面编程,扩展功能不是修改源代码实现
-
ioc 控制反转, 比如有一类,在类里有一个方法(不是静态方法),调用类里面的方法,创建类的对象,使用对象调用方法,创建类对象的过程,需要new出来对象
把对象的创建不是通过new方式实现的,而是交给Spring配置创建类对象
-
-
spring是一站式的框架
- Spring在javaee三层结构中,每一层都提供不同的解决技术
web层:SpringMVC
service层:Spring的ioc
dao层:Spring的jdbc Template
-
Spring 4.x
Spring 的ioc操作
- 把对象创建直接交给Spring来进行管理
- ioc操作两部分:
- ioc的配置文件方式
- ioc的注解方式
IOC底层原理
-
ioc底层原理使用技术
- xml配置文件
- dom4j解析xml
- 工厂设计模式
- 反射
-
思想:高内聚,低耦合
Ioc原理:
IOC入门案例
第一步:导入jar包
1. 解压资料文件
2. jar包特点:都有三个jar包
1. 基本jar包
2. 文档
3. 源代码
3. 做Spring最基本功能时候,导入四个核心的jar包就可以了
4. 导入支持日志输出的jar包
第二步:创建类,创建方法
第三步:创建spring配置文件,配置创建类
-
spring 核心配置文件名称和位置不是固定的
-
建议放到src下面,官方建议applicationContext.xml
-
引入schema约束
![在这里插入图片描述](https://img-blog.csdnimg.cn/2020030719352249.png)
- 配置对象创建
第四步 写代码测试
Spring的bean管理(xml方式)
Bean实例化的方式
-
在spring里面通过配置文件创建对象
-
bean实例化三种方式实现
-
使用类的无参数构造创建
<bean id="user" class="User"></bean>
类里没有无参数构造会出现异常
-
使用静态工厂创建
- 创建静态的方法,返回类对象
-
使用实例工厂创建
1.创建不是静态的方法,返回类对象
-
Bean标签常用属性
-
id属性:id属性值名称任意命名
id属性值不能包含特殊符号
根据id值得到配置对象
-
class属性:创建对象所在类的全路径
-
name属性:功能和id属性是一样的,id属性值不能包含特殊符号,但是在name属性值里面可以包含特殊符号,遗留属性,基本不用
-
scope属性:
属性注入
-
创建对象时,向类里面属性里设置值
-
属性注入的方式介绍(三种方式)
-
Spring框架中,支持前两种方式
-
set方法注入
-
有参数构造注入
-
注入对象类型属性
-
创建service类和dao类
1.在service中得到dao对象
-
具体实现过程
1.在service里面把dao作为类型属性
2.生成dao类型属性的set方法
3.配置文件注入关系
P名称空间注入
注入复杂类型属性
- 数组
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200307193943156.png)
-
list集合
-
map集合
-
properties类型
IOC和DI区别
1. ioc:控制反转,把对象创建交给spring进行配置
2. DI:依赖注入,向类里面的属性中设置值
3. 关系:依赖注入不能单独存在,需要在ioc基础上完成操作
Spring整合web项目原理
-
加载spring核心配置文件
- new对象,功能可以实现,效率很低
-
实现思想:把加载配置文件和创建对象过程,在服务器启动时候完成
-
实现原理
- ServletContext对象
- 监听器
- 具体使用
在服务器启动时候,为每个项目创建一个ServletContext对象
在ServletContext对象创建时,使用监听器可以具体到ServletContext对象什么时候创建
使用监听器听到ServletContext对象创建时候
加载spring配置文件,把配置文件配置对象创建
把创建出来的对象放到ServletContext对象里面(setAttribute方法)
获取对象,到ServletContext域得到(getAttribute方法)