Spring5
一、Spring概念
- Spring框架主要由七部分组成,分别是 Spring Core、 Spring AOP、 Spring ORM、 Spring DAO、Spring Context、 Spring Web和 Spring Web MVC
- 轻量级开源JavaEE框架。
二、IOC容器
1、基于xml方式
- 控制反转,把创建对象过程交给spring进行管理。
注意:上面默认对象创建时为单实例,单实例在加载配置文件时候就会创建对象,多实例模式在加载配置文件时不会创建对象,在调用getBean()方法时创建多实例对象。
bean的单实例和多实例声明如下:
bean声明的时候不仅有singleton、prototype,还有request、session,当使用request、session时会把创建的对象放到request或session里面。
如下图,若修改dao的名称,直接修改xml文件即可,不用修改代码
- IOC操作Bean管理
(1)基本类型和对象
(2)数组和List、Map集合类型
方式一:
简化。方式二:
- IOC的Bean工厂(FactoryBean)
1、spring有两种bean类型
(1)普通Bean,在配置文件中定义Bean类型就是返回类型
同上
(2)工厂Bean,在配置文件中定义Bean类型和返回类型不一样
- bean的生命周期
声明初始化和销毁方法
- xml自动装配
以上的xml声明bean的时候都是使用<property></property>
手动装配的,自动装配有两种方式(在注解中就对应@Autowried按byType自动注入,而@Resource默认按byName自动注入):
- xml管理外部属性文件.properties(如数据库连接信息等)
比如下面的例子,就可以提取出来
(1)提取属性值到properties文件,文件放在src根目录下
(2)引入名称空间、引入外部属性文件、使用表达式
2、基于注解方式
- 创建对象
(1)基本使用
(2)组件扫描过程中,使用的是默认的filter,如果要使用自定义filter,需要修改为以下配置
- 注入属性
(1)基于注解方式实现属性注入
(顺便解释下@Autowired、@Resource、@Qualifier、@Value的区别,注意它们所在包,@Resource属于java扩展包,不是Spring)
3、完全注解开发
比如上面的注解创建对象中,xml的组件扫描步骤可以使用配置类代替
加载创建对象时不再加载xml文件,使用配置类
三、Aop
1、Aop概念
- 面向切面,不修改源代码进行功能增强。
- Aop四大术语
- Aop底层使用动态代理
(1)有接口情况,使用jdk动态代理
代码:
(2)没有接口情况,使用CGLIB动态代理
2、Aop操作
-
spring框架一般都基于AspectJ实现Aop操作
-
可以参考一下第三阶段:5、Spring之AOP
-
注解方式实现aop
注意:上面依旧有xml少量配置,如果完全使用注解,可使用以下方式代替xml配置
-
切入点抽取
像上面的@Before、@AfterReturning中对相同切入点进行提取,可使用以下方式:
1、新建切入点公共类,使用@Pointcut注解
-
切入方法的优先级设置
-
配置文件方式实现aop
四、JdbcTemplate
- 配置文件方式
(1) 引入依赖jar
(2)配置数据库连接池
(3)配置JdbcTemplate对象,注入DataSource
(4)jdbcTemplate操作数据库
(4-1)执行查询sql(返回基本类型、对象、集合)
(4-2)批量增、删、改
五、事务管理
- spring进行事务管理有两种方式
(1)编程式事务管理
(2)声明式事务管理(底层使用Aop)
(2-1)基于注解
上面的第二步注解方式可以替换成配置文件,实现完全注解
注解@Transactional的参数说明
(2-2)基于xml
(3)补充事务中出现的三种读问题:脏读、幻读、不可重复读。这三个问题都能用事务隔离级别解决
六、Spring5新特性
1、日志log4j
2、注解
(1)@Nullable
3、测试功能改进
(1)JUnit4
(2)JUnit5
4、SpringWebFlux(重点)
(1)webflux介绍:异步非阻塞的框架
(1-1)与SpringMVC的区别
(2)响应式编程
(2-1)概念
(2-2)Reactor实现
(3)SpringWebflux执行流程和核心API
(4)SpringWebflux基于注解编程模型
(5)SpringWebflux基于函数式编程模型(全程无@Controller、@Service注解)
(6)补充WebClient使用
作用:模拟http请求,可指定请求地址、参数等