spring基础知识概览

97 阅读2分钟

一、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注解所在类的包及其子包中的组件

配置文件

  • 存放在 resources文件夹下,application.properties 或 application.yaml
    • yaml语法 支持 集合,用减号- 表示
  • 支持 内置key 和 自定义key
  • 注入
    • 简单类型 使用 @Value(${""})
    • 类上使用@ConfigurationProperties(prefix=""),迭代注入和配置文件中key一致的属性,可完成集合类型注入
  • 多环境
    • 新建 application-*.yaml文件
    • 在application.yaml中,使用active激活对应的环境
      • 若属性重叠,以active设置优先