目录
Spring是什么
- Java世界应用的事实标准
- Spring容器-一个loC容器
- Spring MVC - 基于 Spring 和Servlet 的Web 应用框架
- Spring Boot —集成度和自动化程度更局
没有Spring之前是怎么做的
选择一:一个main程序打天下
- 非常轻量,适用于非常简单的场景
- 易懂
- —旦规模上来之后
- 难以维护
- 一场灾难
选择二:拆分并且手动管理
- 拆分成多个模块
- 优点:
- 方便测试
- 方便共同开发
- 方便维护
- 缺点:
- 依赖关系纷繁复杂
Spring出现了解放了我们的双手
Spring-容器的核心概念
- Bean
- 容器中的最小工作单元,通常为一个Java对象
- BeanFactory/ApplicationContext
- 容器本身对应的Java对象
- 依赖注入(DI)
- 容器负责注入所有的依赖
- 控制反转(loC)
- 用户将控制权交给了容器
我们先来手写一个简单的实现
- 定义Bean
- 加载Bean的定义
- 实例化Bean
- 查找依赖,实现依赖注入
- 要什么Bean就给你什么Bean
然后我们看看Spring的实现
- 在XML里面定义Bean
- BeanDefinition的载入和解析
- Bean的实例化和依赖注入
- 对外提供服务
@Autowired Spring自带,有点过时
推荐@Inject
放在构造器上方便测试
循环依赖
推荐读源代码的方式
对于复杂的框架或者程序,不要在一些细节里面浪费太多的精力和时间,要带着目标去找(比如知道Bean的依赖注入在哪里发生的)
练习
Checkstyle [ERROR]
File does not end with a newline:文件不以换行符结尾
MyIoCContainer.java 叫做文件
「资料来源:饥人谷」