Spring框架
Spring框架概述
1.Spring 是轻量级的开源JavaEE 框架
2.Spring 可以解决企业应用开发的复杂性
3.Spring 有两个核心部分 IOC 和Aop
IOC: 控制反转 把创建对象过程交给Spring 进行管理
Aop : 面向切面,不修改源代码进行功能增强
4.Spring 特点
1.方便解耦 简化开发
2.Aop 编程的支持
3.方便程序的测试
4.方便和其他框架进行整合
5.方便进行事物操作
6.减低API开发难度
IOC容器
控制反转,把对象创建和对象之间的调用过程,交给spring进行管理
使用ioc的目的 :为耦合度降低
1.IOC底层原理
底层技术 xml解析 工厂模式 , 反射
IOC过程
第一步 xml配置文件,配置创建的对象< bean id="" class ="">< /bean >
第二步 有service类 和dao类 创建工厂类
class UserFactory{
public static UserDao getDao(){
String classvalue =class属性值 //运用xml解析得到值
//通过反射创建对象
Class clazz = Class.forNme(classvalue)
return clazz .newInstance();
}
}
2 IOC接口
IOC思想 基于IOC容器完成 ,IOC容器底层就是对象工厂
2.Spring 提供IOC容器的两种实现方式 : 两个接口
(1) BeanFactory IOC容器基本实现 , 是Spring内部使用接口 ,不提供开发人员进行使用
特点 :加载配置文件的时候不会创建对象,在使用的时候采取创建对象
(2)ApplicationContext : BeanFactory 接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
特点:加载配置文件的时候就会把在配置文件中给的对象进行创建
ApplicationContext 的两个实现类
FileSystemXmlApplicationContext 对应带盘的那个路径
ClasPathXmlApplicationContext src下的类路径
IOC操作 Bean管理
1.什么是Bean管理
Bean管理的两个操作
(1) Spring创建对象
(2)Spring属性注入
Bean 管理操作两种方式
1.基于xml配置文件方式实现
基于xml创建对象
在spring 配置文件中,使用bean 标签 标签里面添加对应的属性就可以实现对象的创建
在bean 标签里的属性
id 属性 唯一标识
class 属性 类全路径 (包类路径)
创建对象的时候,默认执行无参构造方法
基于xml方式注入属性
(1) DI : 依赖注入 ,就是注入属性
第一种注入方式 : 通过set方法注入
(1)创建类 定义属性和对应的set方法
(2) < !-- 使用property 完成属性注入 name 属性 类里面属性名称 value 向属性注入的值 – >
第二种注入方式 : 使用有参构造注入
2.基于注解方式实现
(1)创建类,定义属性 创建属性对应
在配置文件中配置
p名称空间注入 (了解)
使用p名称空间注入,可以简化基于xml配置方式
xml注入其他类型属性
1.字面量
(1) null 值
(2)属性包含特殊符号
注入属性 – 外部bean
(1)创建两个类service 类和dao类
(2)在service 调用dao里面的方法
(3)在spring 配置文件中进行配置
注入属性 - 内部bean 和级联赋值
一对多关系 : 部门和员工
一个部门有多个员工 ,一个员工属于一个部门 部门是一 员工是多
2. 在实体类中表示一对多关系 ,员工所属的部门,使用对象类型属性进行表示
3.在spring配置文件进行相关配置
内部bean
注入属性–级联赋值(给属性的属性赋具体的值)
第一种方式
第二种方式 需要有 属性的get方法
xml注入集合属性、
1.创建类,定义数组 list map set 类型属性 生成set方法
1注入数组类型属性
2.注入 List集合属性
3,注入Map集合类型属性
4.set
4.在集合里面设置对象类型值
5.把集合注入部分提取出来
(1) 在spring 配置文件中引入名称空间util
使用util标签完成list 集合注入提取
Ioc 操作Bean 管理(FactoryBean)
1.Sping 有两种类型bean,一种是普通bean ,另一种是工厂bean (FactoryBean)(Spring内置的)
2.普通bean:在spring配置文件中 定义的类型就是返回的类型
3.工厂bean,在配置文件定义bean类型可以和返回类型不一样
1. 创建一个类 让这个类作为工厂bean,实现接口FactoryBean
2. 实现接口里面的方法,在实现的方法中定义返回的bean类型
Bean的作用域
1.在Spring里面可以是设置创建bean实例是单实例还是多实例
2.在Spring里面默认情况下是单实例
3 .如何设置单实例还是多实例
(1)在spring配置文件bean标签里面有属性用于设置单实例还是多实例(scope)
scope 的属性值
1.默认值 singleton
2. prototype
singleton 和 prototype的区别
1.singleton 表示单实例 prototype表示多实例
2.设置scope 标签为 singleton的时候 加载spring配置文件的时候就会创建单实例对象
设置scope 标签为 prototype的时候,不是在加载spring配置文件时候创建对象,是在调用getbean的时候创建多实例对象
request
session
Bean生命周期
生命周期: 从对象创建到对象销毁的过程
Bean 的生命周期 :
(1)通过构造器创建bean实例(无参构造)
(2) 为bean的属性设置值 和对其他bean的引用(调用set方法)
(3)调用bean 的初始化的方法(需要进行配置)
(4)bean 可以使用了(对象获取到了)
(5) 当让其关闭的时候,调用bean的销毁的方法(需要进行配置销毁的方法)
演示bean的生命周期
bean的后置处理器 bean的生命周期
(1)通过构造器创建bean实例(无参构造)
(2) 为bean的属性设置值 和对其他bean的引用(调用set方法)
(3) 把bean的实例传递bean后置处理器的方法
(4) 调用bean 的初始化的方法(需要进行配置)
(5) 把bean的实例传递bean后置处理器的方法
(6) bean 可以使用了(对象获取到了)
(7) 当让其关闭的时候,调用bean的销毁的方法(需要进行配置销毁的方法)
IOC操作 Bean管理(xml自动装配)
1.什么是自动装配
根据指定装配规则(属性名称或者属性类型),在spring 中自动将匹配的属性进行注入
2.演示自动装配
bean 标签属性autowire
byName :根据属性名称注入 要注bean的 id值 和类的属性名称一样
byType 根据属性类型注入
框中语句注释掉了也可以正确输出出哇哈哈
IOC操作 Bean 管理(外部属性文件)
1.直接配置数据库信息
配置德鲁伊连接池
引入外部属性文件
1,引入名称空间
在spring配置文件使用标签引入外部属性文件
IOC操作 Bean管理(基于注解方式)
什么是注解
(1)注解是代码特殊标记, 格式: @注解名称(属性名称=属性值)
(2) 使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解的目的 :简化xml配置
Spring针对Bean 管理 中创建对象提供的注解
1.@Component
2.@Service
3.@Controller
4.@Repository
以上四个注解功能是一样的,都可以用来创建bean实例
3.基于注解方式实现对象创建
第一步 引入新依赖
第二步:开启组件扫描 、
base-package 里面填要扫描的包的路径
如果有多个包可以用逗号分开
2.可以写扫描包的上层目录
第三步创建类 在类上面添加创建对象注解
value 属性值可以不写 默认值是类名称 首字母小写
注意::
context:include-filter 设置扫描哪些内容
上面例子 是扫描在com.atguigu下面Controller的注解
下面 是不扫描在com.atguigu下面除了Controller的注解
5 基于注解方式属性注入
注解
1.@AutoWired :根据属性类型进行自动装配
第一步 把service 和dao 对象进行创建 (加上注解)
第二步 在service注入dao对象 在service类添加dao类型属性 在属性上面使用注解(属性不需要有set方法)
2. @Qualifer :根据属性名称进行注入
@Qualifer的使用 和上面 @AutoWired一起使用
指明注入的属性和类型
4. @Resource: 可以根据类型注入,可以根据名称注入
![在这里插入图片描述](https://img-blog.csdnimg.cn/87bdaa34ec254f4db272f5cdf2c8067d.png?x-oss-process=image/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBA5bCP5bGB5a2p5LiN5Yqq5Yqb,size_20,color_FFFFFF,t_70,g_se,x_16)
这个注解不是Spring中的注解 是 javx重点注解
5.@Value 注入普通类型属性
完全注解开发
1.创建配置类 替代xml配置文件
2.编写测试类