认识
SpringBoot是 Pivotal 团队在 Spring 的基础上提供的一套全新的开源框架,其目的是为了简化 Spring 应用的搭建和开发过程。Spring Boot 去除了大量的 XML 配置文件(约定大于配置),简化了复杂的依赖管理(封装第三方组件,提供多种starter)。
回顾项目开发的经历
根据我的工作经历,把项目划分这些阶段。
第一个阶段(没有IOC,Servlet、Jsp)
特点
- 对象的生成通过new关键字
- 对象间的依赖关系是通过编码的方式通过调用构造函数或set方法来实现
问题
- 大量的new和set函数充斥在代码中
- 依赖关系稍作调整,可能会出现牵一发而动全身的问题
第二阶段(Spring)
特点
- bean的生成及之间的依赖关系通过xml管理
- 逐步引入MVC模式 干掉了strusts框架(感兴趣的可以做个简单了解)
问题
- 项目比较大时需要维护大量的xml
- 仍需要编写set函数或构造函数,无需手动调用
第三阶段(SpringBoot)
特点
- bean的生成及之间的依赖关系通过注解声明
- 引入starter,整合第三方框架,节省了开发的时间和成本
问题
- 随着互联网发展,业务功能越来越多,单纯的springboot框架无法适用于大规模的业务处理
- starter的封装带来了使用上的便捷,但也使开发人员第三方组件了解的更少
第四阶段(SpringCloud)
- 微服务架构,对业务服务进行横向拆分。各种框架如同雨后春笋应运而生
问题
- 解决同一个问题,有多套框架,且企业使用各有不同,对开发人员不友好,需要花费大量时间来掌握更多的专业技能
老生常谈
IOC(Inversion of Control 控制反转)
原来要通过代码进行对象的set或构造函数来控制内置对象,现在交给了第三方(spring)去控制对内置对象的创建和注入。具体实现是通过反射机制来实现(xml、注解 都是为了表明对象间关系)。
有人把IOC称为思想,也有人把IOC叫做容器。管理了生成的对象
DI(Dependency Injection 依赖注入)
内置对象通过注入的方式进行创建 。
随着注解方式的流行@Autowired 讲的更多的是注入
AOP
Aspect Oriented Programming 面向切面编程,通过预编译方式和运行期间动态代理实现程序功能的技术.
好处:
- 解决了代码重复问题
- 横切逻辑代码与业务代码解耦
一个请求的一生
- 用户通过浏览器发送一个HttpRequest请求
- DispatchServlet监听端口,接收请求
- 获取请求路径,查找对应的对象和方法,并把请求内容进行转换
- 执行业务逻辑,返回结果
- 对结果进行加工,通过HttpResponse把响应内容返回给用户
总结
本文主要谈了一些个人的感想和认知,有不足的地方,望指正!
下一篇主要探SpringBoot启动过程