小马哥 spring 笔记


课件

https://github.com/geektime-geekbang/geekbang-lessons

大纲

Java 语言特性:反射、动态代理、枚举、范型、注解、ARM(Automatic Resourse Management)、lambda
设计思想和设计模式:OOP、IOC、DDD、TDD、GoF23
Java API 的封装与简化: JDBC、事务 Transaction、servlet、JPA、JMX、Bean Validation
JSR 规范的适配与实现
三方框架的整合:Mybitis 整合 hibernetes、Redis
其它:AOP、Spring EL 事务、Web 特性

玩游戏看颜色,学技术看版本

常见面试题

BeanFactory 与 FactoryBean 区别?

BeanFactory 是 IoC 底层容器
FactoryBean 是 创建 Bean 的一种方式,帮助实现复杂的初始化逻辑

Spring IoC 容器启动时做了哪些准备?

IoC 配置元信息的读取和解析、IoC 容器的生命周期、String 事件发布、国际化等

IOC 容器的职责

依赖处理: 依赖查找 依赖注入 生命周期管理:容器、托管的资源(Java beans 或其它资源) 配置:容器、外部化配置、托管的资源(Java beans 或其它资源)

依赖注入的四个方式

构造器注入
setter 注入
属性注入
接口注入

IOC 实现策略

依赖查找 依赖注入

依赖查找 VS 依赖注入

类型 依赖处理 实现便利性 代码入侵性 API 依赖性 可读性
依赖查找 主动获取 相对繁琐 侵入业务逻辑 依赖容器 API 良好
依赖注入 被动提供 相对便利 低入侵性 不依赖容器 API 一般

IOC 要服从以下几个设计目的:

实现与执行的任务之间解耦 关注设计的最终目标而不是它具体实现 其它系统知道这个模块怎样运作,但是却不依赖任何契约 替换一个模块的时候要防止边缘效应

https://en.wikipedia.org/wiki/Inversion_of_control

spring aop的理解 有几种实现方式

静态代理和动态代理