Spring 框架中的Spring FrameWork
spring官网
spring不仅只是一个技术,发展到现在sping有完整的家族体系,提供了若干个项目,每个项目可以完成特定的功能,称为spring全家桶
90%以上的企业技术选型
优势
- 简化开发复杂性
IOC
AOP
事务处理 - 框架整合,高效整合其他技术
Mybatis
Mybatis-plus
struts
struts2
hibernate
一,Spring FrameWork
是sping全家桶中最基础的项目,是其他项目的根基
1.1 spring FrameWork系统架构
系统架构1.2 IOC核心思想
之前java代码写的项目耦合度偏高
使用对象时,在程序中不主动使用new产生对象,转换为由外部提供对象 这就是IOC(控制反转)
对象的创建控制权由内部代码转移到外部,这种思想交控制反转,目的就是解耦
Spring把这个控制反转的思想做到了,进行了实现
spring在内部提供了一个容器叫IOC容器,用来充当ioc思想中的“外部”
ioc容器负责对象的创建初始化等,被创建的的对象再ioc容器里被称为bean
DI依赖注入,两个bean中存在依赖关系,ioc容器直接帮你把他两绑好,这个过程叫作依赖注入
总结:充分解耦
1 使用ioc容器管理bean(IoC)
2 在IoC容器内有依赖关系的bean进行绑定
管理service和dao(Mapper)包
二,Spring 的使用
首先要导入第三方spring framework的包
<!-- sping framwork-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.2.10.RELEASE</version>
</dependency>
image.png
image.png
- DI基本使用
配置server与dao关系
配置关系
2.1 bean的基础配置
-
1 bean取别名
在bean标签中可以使用name属性来进行别名设置。 -
scope定义bean作用范围
默认单例 (所有对象用这一个实例并且,这个唯一的Bean实例会被储存到缓存当中)
prototype 非单例(会每次都重新生成一个新的对象实例给请求方)
控制我们bean创建的数量的
spring报错从最后一行看 ,依次往上解决
2.2 构造方法实例化bean
<bean id="brandDao" class="实现类路径"/>
bean本质上就是对象,创建bean使用构造方法完成
spring在给我们创建bean的时候调用的是无参的构造方法
2.3 静态工厂bean实例化
<bean id="orderDao" class="factory.orderFactory" factory-method="调用工厂的那个方法来进行创建"/>
2.4 实例工厂初始化bean
<bean id="UserFactory" class="factory.userDaoFactory" />
<bean id="userDao" factory-bean="UserFactory" factory-method="getUserDao" />
2.5FactoryBean 使用最多方法创建
image.png2.6 Bean的生命周期
bean从创建到销毁的整体过程
例 经历的阶段
三,Bean依赖注入方式
-
1 setter注入
简单类型
image.png
引用类型
-
2 构造器注入
简单类型
引用类型
image.png -
3 依赖自动装配
只能用于引用类型依赖注入
容器根据bean所依赖的资源自动查找并注入到bean中的过程称为自动装配 -
根据类型装配(主要用这个)
<bean id="bookservice" class="com.it.impl" autowire="byType"/> -
根据名称装配
<bean id="bookservice" class="com.it.impl" autowire="byName"/> -
4 集合注入
数组 list set map properties
注入
四,容器
创建容器(两种)
ClassPathXmlApplicationContext
FileSystemXmlApplicationContext
获取bean(三种)
BookDao bd = (BookDao)ctx.getBean("bd")
BookDao bd = ctx.getBean("bd",BookDao.class)
BookDao bd = ctx.getBean(BookDao.class)
五,注解开发
简化代码
5.1注解开发定义bean
注解开发定义bean image.png5.2 纯注解开发
image.png image.png5.3 bean的管理
image.png六,AOP
面向切面编程,就是一种编程思想,在不惊动原始设计的基础上为其进行功能加强
- 连接点 程序执行中的任意位置,
-
切入点:匹配连接点的式子
切入点 - 通知:在切入点执行的操作,共性功能
- 通知类:定义通知的类
- 切面:通知与切入点的关系
AOP通知类型
aop通知抽取了共性的功能,根据功能位置不同,最终运行代码要加到合理的位置上
-
前置通知
-
后置通知
-
环绕通知
环绕通知 -
返回后通知
-
抛出异常后通知
Aop获取数据
- 获取原始参数
joinpoint:所有通知类型都可以
proceedJoinPoint:环绕通知 - 获取原始返回值
返回后通知
环绕通知 - 获取原始异常
抛出异常后通知
环绕通知
用例,比如在百度网盘分享链接和提取码时,当用户点开链接输入密码时多输入的空格进行处理,可以用环绕通知拿到参数进行处理trim()
七,事务
列如,银行转账
保证一系列的数据库操作同成功同失败
在接口中打一个注解@transitonal
spring事务属性
@transitonal(timeout=-1)
image.png
处理事务 要求有些操作不加入事务中去
@transitonal(propagation=propagation.REQUIRE_NEW)