Java-Spring 学习笔记
学习目标:了解原理和编程思想,具备阅读相关源码的能力
Java 和 Spring 的关系
- Spring 利用Java 的特性
- 实现可IOC容器
- 整合了更多的标准和生态
- 是最流行的企业级Java编程框架
Spring Framework包含什么
- Java增强:注解、事件、资源
- IoC核心:依赖注入、Spring Bean、BeanFactory、应用上下文
- 扩展工具:国际化、占位符、类型转换、数据绑定、检验
IOC 反向控制
- 是好莱坞原则的一种编程原则「你不要给我打电话/我会给你打电话」
- 核心思想是,数据主动调用业务逻辑,而不是业务根据需要去寻找数据。
MVC 编程模式
- 经典、传统、相对落后
- V 是前端界面
- C 根据V上面的交互操作确定调用哪些M,根据M的返回情况控制V的变化
- M 是可以被复用的数据调取、数据计算等业务处理模块
DI依赖注入
- IOC的实现方式之一
- 把有依赖关系的类放到容器中,然后解析出这些类的实例,实现解耦
- a依赖b,但a不控制b的创建和销毁,只能使用b,那么b的控制权交给a之外处理,这叫控制反转(IOC),而a要依赖b,必然要使用b的instance
- 注入方式
- 通过a的接口,把b传入;
- 通过a的构造,把b传入;
- 通过设置a的属性,把b传入;
Tomcat和Undertow
- Tomcat 重量,功能多
- Undertow 轻量,性能好
POJO 简单的Java 对象
- 只有getter setter 的类
- 没有业务逻辑
- 也叫作普通Java Bean
- Java Beans 产生的初衷是为了解决IDE组件复用的问题
DI注入实战
- 官方推荐构造器注入,但是注入对象3个以下
- Setter注入无法处理注入对象处理顺序的问题
Event 事件实战
- 实现Listener接口
- 使用注解
Annotations 注解
- 用于保存程序相关的配置信息
- 和XML相比,注解是一种松散的配置方法
- 可以选择注解配置信息使用的阶段:编译时、运行时
- 可以选择注解的对象:类型、构造器、类、字段、方法、注解
- 注解的注解叫做元注解
- 模式注解-component
- 模式注解用于注解扫描、候选对象
- 组合注解-多个注解合成一个
Bean 生命周期
- 元信息:配置 解析 注册 加载
- 实例化、赋值、回调
- 初始化
- 销毁、回收
Environment 抽象
- 占位符处理 ${xxxx}
Spring AOP 面向切面编程
- 字节码
- 反射 ClassLoader 获取类的信息
- ASM
- 动态代理
- 目的是,在不修改原有流程和代码的前提下,实现对原有类的能力扩展
- 使用代理对象代替普通对象
- 通过重写代理的invoke方法实现拦截
- 筛选判断
- 类的名称
- 方法类型
- 注解
- 异常
- 特点
- 运行时拦截,不涉及编译时的拦截,不修改字节码
- 仅支持方法纬度的切入点
- 可以使用AspectJ来扩展AOP编程
Spring Boot 介绍
- 用于快速、敏捷地开发新一代基于Spring框架的应用程序。
- 使开发人员不再需要定义样板化的配置。
- 集成了大量常用的第三方库配置(例如Redis,Jpa RabbitMQ,Quartz等等),几乎可以零配置的开箱即用。
Spring Boot 补充
- 创建独立的spring应用程序
- 直接内嵌tomcat、jetty和undertow
- 提供了固定化的“starter”配置,以简化构建配置
- 尽可能的自动配置spring和第三方库
- 提供产品级的功能,如:安全指标、运行状况监测和外部化配置等
- 绝对不会生成代码,并且不需要XML配置