39Spring IoC容器原理

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的依赖注入在哪里发生的)

练习

一个简单的IoC容器

Checkstyle [ERROR]

File does not end with a newline:文件不以换行符结尾

MyIoCContainer.java 叫做文件

「资料来源:饥人谷」

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注