三个核心特性
IOC:控制反转
通过new创建对象 -> 将对象抽象成统一接口 -> 不再new,而是填入
- 将创建对象的权利交给Spring容器
- 运行的时候根据配置文件/注解来完成注入动作
AOP:面向切面编程
将共有的,无关业务核心的代码单独拿出,从之前的纵向编码(a1,a2,a3继承于接口A,A中方法这些代码)变成了横向(把这些散落在各处的代码整合成单独的模块)。是对OOP的补充和完善。
- 切面:将那些影响了多个类的公共行为封装到的这个可重用模块就是切面。
- 连接点:可以插入切面的部分。比如数据库业务中的增删改查。
- 增强:选择时机(之前,之后,环绕),完成行为。比如执行“删”这个行为之前需要备份日志。
- 切入点:执行增强的连接点。
- 织入:将增强添加到目标类具体连接点上的过程。
DI 依赖注入
DI 可以理解为 IOC 的另一种表达方式,即组件以一些预先定义好的方式(如 setter)接收来自容器的资源注入。可以主动(通过配置文件去请求)或被动的注入。
相比于IOC,IOC就是一种被动依赖注入的对象托管服务理念。
SpringBoot
起源:Servlet
所有使用Java编写的,实现了Servlet接口的类,就称作Servlet。该接口与ServletRequest对象和ServletResponse对象交互,在Servlet容器的参与下,完成Http的解析和封装(包含cookie,重定向等很多封装好的功能)。
- 相比于在客户端执行的Applet(Java兼容的Web浏览器),Servlet利用的是服务器资源(Java启用Web服务器)。
- JSP是简化的Servlet设计,是Servlet的高级封装,在容器中会转换成Servlet执行,目的就是为了方便修改HTML网页。
- Servlet容器主要负责管理Servlet、JSP的生命周期以及它们的共享数据。 目前最流行的Servlet容器软件包括: Tomcat、Jetty、Jboss 等。
MVC设计模式
SpringMVC将前端,数据库引入,通过MVC的设计结构,组成了这个框架。其通过注解等方式标注不同层次的结构。提供解决方案:通过Dispatcher Servlet, ModelAndView 和 View Resolver,开发web应用变得很容易。
MVC结构中前端控制器就是一个servlet。如下图:
Springboot
【习惯大于约定】 的想法,数据库配置,bean的配置,mvc mapping的声明,都是十分麻烦的。在spring boot上这搭建工程仅需几分钟即可。而springboot可以自动装配。