框架概述
1、Spring是轻量级的开源的JavaEE框架,
2、Spring可以解决企业应用开发的复杂性:
3、Spring有两个核心部分:IOC和Aop
(1)IOC:控制反转,把创建对象过程交给Spring进行管理.
(2)Aop:面向切面,不修改源代码进行功能增强:
4、Spring特点
(1)方便解耦,简化开发
(2)Aop编程支持r
(3)方便程序测试
(4)方便和其他框架进行整合
(5)方便进行事务操作
(6)降低API开发难度:
IOC
1、什么是IOC
(1)控制反转,把对象创建和对象之间的调用过程,交给Spring进行管理
(2)使用IOC目的:为了耦合度降低
(3)做入门案例就是IOC实现
2、IOC底层原理
(1)xml解析、工厂模式、反射
3.画图讲解底层原理
IOC接口
1、IOC思想基于IOC容器完成,IOC容器底层就是对象工厂
2、Spring提供IOC容器实现两种方式:(两个接口)
(1)BeanFactory:IOC容器基本实现,是Spring内部的使用接口,不提供开发人员进行使用
*加载配置文件时候不会创建对象,在获取对象(使用)才去创建对象
(2)ApplicationContext:
BeanFactory接口的子接口,提供更多更强大的功能,一般由开发人员进行使用
*加载配置文件时候就会把在配置文件对象进行创建
3、Application Context接口有实现类 快捷键 CTRL+H 出现继承关系图
IOC操作bean管理
1、什么是Bean管理
(0)Bean管理指的是两个操作u
(1)Spring创建对象.
(2)Spirng.注入属性:
IOC操作Bean管理(基于xml方式)
1、基于xml方式创建对象
配置User对象创建
<bean id="user" class="com.atguigu.spring5.User"></bean
(1)在spring配置文件中,使用bean标签,标签里面添加对应属性,就可以实现对象创建,
(2)在bean标签有很多属性,介绍常用的属性
*id属性:唯一标识
*class属性:类全路径(包类路径)
(3)创建对象时候,默认也是执行无参数构造方法完成对象创建
2、基于xml方式注入属性
(1)DI:依赖注入,就是注入属性
第一种注入方式:使用set方法进行注入
<1--2set方法注入属性--》
<bean id="book"class="com.atguigu.spring5.Book
<!--使用property完成属性注入,name:类里面属性名称,value:向属性注入的值-->
<property name="bname” value="易筋经"></property>.
</bean>
第二种注入方式:使用有参数构造进行注入
5、p名称空间注入(了解)
(1)使用p名称空间注入,可以简化基于ml配置方式
第一步添加P名称空间在配置文件中:
6.注入外部bean
11.尚硅谷_IOC容器-Bean管理XML方式(注入外部bean)_哔哩哔哩_bilibili
IOC操作Bean管理(基于注解方式)
1、什么是注解
(1)注解是代码特殊标记,格式:@注解名称(属性名称=属性值,属性名称=属性值)
(2)使用注解,注解作用在类上面,方法上面,属性上面
(3)使用注解目的:简化xml配置
2、Spring针对Bean管理中创建对象提供注解
(1)@Component
(2)@Service.
(3)@Controller
(4)@Repository.
上面四个注解功能是一样的,都可以用来创建bean实例.
5、基于注解方式实现属性注入
(1)@Autowired:根据属性类型进行自动装配
(2)@Qualifier:根据属性名称进行注入
3)@Resource:可以根据类型注入,可以根据名称注入
(4)@Value:注入普通类型属性
AOP(概念)
1、什么是AOP
(1)面向切面编程(方面),利用AOP可以对业务逻辑的各个部分进行隔离,从而使得
业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
(2)通俗描述:不通过修改源代码方式,在主干功能里面添加新功能
aop术语
AOP操作(准备)
1、Spring框架一般都是基于AspectJ实现AOP操作
(1)什么是AspectJ
*AspectJ不是Spring组成部分,而是一个独立AOP框架,一般把Aspectj和Spirng.框架一起使用,进行AOP操作
2、基于Aspect边实现AOP操作
(1)基于xml配置文件实现
(2)基于注解方式实现(使用)
3、在项目工程里面引入AOP相关依赖
4、切入点表达式
(1)切入点表达式作用:知道对哪个类里面的哪个方法进行增强
(2)语法结构:
execution(权限修饰符][返回类型][类全路径][方法名称]([参数列表]))
举例1:对com.atquigu.dao.BookDao类里面的add进行增强
execution(*com.atguigu.dao.BookDao.add(..)
6、有多个增强类对同一个方法进行增强,设置增强类优先级
(1)在增强类上面添加注解@Ordr(数字类型值),数字类型值越小优先级越高
JDBC
事物
2、事务四个特性(ACID)+
(1)原子性
(2)一致性
(3)隔离性
(4)持久性
1、事务添加到JavaEE三层结构里面Service层(业务逻辑层)
2、在Spring进行事务管理操作
(1)有两种方式:编程式事务管理和声明式事务管理(使用)
3、声明式事务管理
(1)基于注解方式
(2)基于xml配置文件方式
3、在service类上面(或者service类里面方法上面)添加事务注解
(1)@Transactional,这个注解添加到类上面,也可以添加方法上面
(2)如果把这个注解添加类上面,这个类里面所有的方法都添加事务
(3)如果把这个注解添加方法上面,为这个方法添加事务
事务操作注释参数管理
propagation:事务传播行为
3、ioslation:事务隔离级别
(1)事务有特性成为隔离性,多事务操作之间不会产生影响。不考虑隔离性产生
(2)有三个读问题:脏读、不可重复读、虚(幻)读
(3)脏读:一个未提交事务读取到另一个未提交事务的数据
(4)不可重复读:一个未提交事务读取到另一提交事务修改数据.
4、timeout:超时时间:
(1)事务需要在一定时间内进行提交,如果不提交进行回滚
2)默认值是-1,设置时间以秒单位进行计算
5、readOnly:是否只读
(1)读:查询操作,写:添加修改删除操作
(2)readOnly默认值false,表示可以查询,可以添加修改删除操作
(3)设置readOnly值是true,设置成true之后,只能查询,
6、rollbackFor:回滚
(1)设置出现哪些异常进行事务回滚
noRollbackFor:不回滚
(1)设置出现哪些异常不进行事务回滚:
(1)@Nullable注解可以使用在方法上面,属性上面,参数上面,表示方法返回可以为空,属性值可以为空,参数值可以为空
Webflux
Java 8中 lambda 表达式详解 - 掘金lambda 表达式,相信大家都不陌生,就算没有用过,那应该也听说过。我也是一样,在使用新特性 stream 流处理集合相关的代码时接触到这种语法,其他地方倒是不经常使用。所以也是仅仅知道一些皮毛https://juejin.cn/post/7035997996936331294Java 8中 Stream 流详解 - 掘金
08
配置 类组件之间有依赖关系,方法会被调用得到之前单实例组件,用Full模式
因为有依赖关系的话即别人会调用这个bean如果使用lite虽然会返回一个bean但那是重新创建的并非原先的。
- 配置 类组件之间无依赖关系用Lite模式加速容器启动过程,减少判断