一、aop
将横切关注点从业务主体逻辑中剥离,实现关注点分离,以提高程序的模块化程度
切面 = 切点 + 通知
- 切点表示位置,从连接点中选取
- 通知表示行为
spring aop框架,基于动态代理,在 类加载器 织入
- jdk代理 基于接口
- cglib代理 基于继承
二、ioc
控制反转,inversion of control,一种设计思想,将 对象 交给 第三方容器 管理
依赖注入,dependency injection,组件之间的依赖关系由容器在运行期决定
ioc容器初始化过程
- 读取配置文件,获取BeanDefinition,注册到BeanFactory中
- 调用BeanFactory的getBean方法时,根据BeanDefiniton信息 实例化bean,放到缓存中
三、mybatis
对jdbc进行封装,支持复杂mysql查询、缓存
缓存原理
- 一级缓存 key为sql语句生成的MappedStatement
- 流程 client - sqlSession - Executor - Cache
- 缓存命中,直接返回;未命中,查表返回并更新缓存
- 一个sqlSession内部共享
- 二级缓存 key通过namespace区分,其他namespace更新同一张表时,会污染缓存
- 流程 二级缓存 - 一级缓存 - 数据库
- 多个sqlSession共享
在spring框架下的mybatis
- @MapperScan扫描xml文件,生成MapperFactoryBean,每个接口生成代理,纳入Bean管理
四、springmvc
Model View Controller,一种软件设计典范
核心组件
- DispatchServlet 处理和分发请求
- HandlerMapping 返回请求路径 对应 的 处理链
- HandlerAdapter 适配请求和响应参数、调用处理器
- ViewResolver 视图解析
五、springboot
会用即可,简单介绍使用
基本步骤
- 添加 父工程坐标
- Spring Boot 提供 spring-boot-starter-parent工程,管理常见依赖的版本
- 添加web启动器
- 自动配置依赖
- 依赖 + 配置
- 创建启动类
- @SpringBootApplication 标识 Spring Boot应用的入口类,具有以下功能
- @Configuration 标识配置类,允许定义和配置Bean
- @EnableAutoConfiguration 启用自动配置机制
- @ComponentScan 自动扫描并加载应用程序中的组件
- 默认扫描@SpringBootApplication注解所在类的包及其子包中的组件
- @SpringBootApplication 标识 Spring Boot应用的入口类,具有以下功能
配置文件
- 存放在 resources文件夹下,application.properties 或 application.yaml
- yaml语法 支持 集合,用减号- 表示
- 支持 内置key 和 自定义key
- 注入
- 简单类型 使用 @Value(${""})
- 类上使用@ConfigurationProperties(prefix=""),迭代注入和配置文件中key一致的属性,可完成集合类型注入
- 多环境
- 新建 application-*.yaml文件
- 在application.yaml中,使用active激活对应的环境
- 若属性重叠,以active设置优先