本文源码:GitHub·点这里 || GitEE·点这里
一、Spring框架
1、框架概述
Spring是一个开源框架,框架的次要劣势之一就是其分层架构,分层架构容许使用者抉择应用哪一个组件,同时为 J2EE 利用程序开发提供集成的框架。Spring应用根本的JavaBean来实现以前只可能由EJB实现的事件。Spring是一个分层的轻量级开源框架。
根本个性:分层架构、高内聚低耦合、反对AOP编程、事务管理、集成测试、集成各种框架。
2、外围组件
外围容器:蕴含Bean的创立、配置、治理等性能。
AOP切面编程:能够帮忙应用程序解耦。
数据拜访:集成了JDBC,罕用的Dao层框架hibernate,mybatis等。
Web编程:集成流程的MVC框架,实现界面逻辑和应用程序拆散。
3、Bean对象了解
Spring容器负责创立,拆卸,设置属性,进而治理整个生命周期的对象,称为Bean对象。
拆卸形式:XML格局、注解扫描、Java代码拆卸。
作用域:用于确定spring创立bean实例个数,比方单例Bean,原型Bean。singleton默认单例、prototype多例、request申请、session会话级、global-session。
生命周期:实例化,属性加载,初始化前后治理,销毁。
4、罕用外围注解
Controller:标记一个类是Handler,基于@Mapping相干注解(@GetMapping、@PostMapping、@PutMapping、@DeleteMapping),用来关联申请和Controller办法之间的映射关系,这样的Controller 就能够被申请拜访。
RequestMapping:解决申请地址映射的注解,可作用于类或办法上。用于类上,示意类中的所有响应申请的办法都是以类上标注地址作为父门路。
Resource:依照ByName主动注入,须要导入包javax.annotation.Resource。@Resource有两个重要的属性:name和type,而Spring将@Resource注解的name属性解析为bean的名字,而type属性则解析为bean的类型。
Service:能够取代具体配置文件的Bean治理,定义的bean默认是单例的,默认名称是类名且首字母小写。
5、IOC与DI思维
IOC容器
Java零碎中对象耦合关系十分复杂,零碎的各模块之间依赖,微服务模块之间的互相调用申请,都是这个情理。升高零碎模块之间、对象之间、微服务的服务之间耦合度,是软件工程外围问题之一。因为Spring框架中核心思想就是IOC管制反转,用来实现对象之间的解耦。
依赖注入
IOC给对象间接建设关系的动作,称为DI依赖注入(Dependency Injection);依赖:对象A须要应用对象B的性能,则称对象A依赖对象B。注入:在对象A中实例化对象B,从而应用对象B的性能,该动作称为注入。
6、Aop切面编程
通过预编译形式和运行期动静代理实现程序性能的对立保护的一种技术。核心作用:能够对业务逻辑的各个局部进行隔离,从而使得业务逻辑各局部之间的耦合度升高,进步程序的复用性和开发效率。AOP提供了取代继承和委托的一种新的计划,而且应用起来更加简洁清晰,是软件开发中的一个热点理念。
实现形式:JDK动静代理、CgLib字节码加强、Spring半自动代理、Spring全自动代理。
7、事务管理
事务是指作为单个逻辑工作单元执行的一系列操作(SQL语句)。这些操作要么全副胜利,要么全副不胜利。Spring事务管理的实质就是封装了数据库对事务反对的操作,应用JDBC的事务管理机制,就是利用java.sql.Connection对象实现对事务的提交和回滚。
外围API封装
PlatformTransactionManager:平台事务管理器,Spring治理事务,必须应用事务管理器进行事务配置时,外围办法:获取事务,提交事务,回滚事务。
TransactionDefinition:该对象封装事务详情(事务定义、事务属性),例如:隔离级别、是否只读、超时工夫 等。
TransactionStatus:用于记录以后事务运行状态。例如:是否有保留点,事务是否实现。Spring底层依据状态进行相应操作。
8、配置文件
在Spring的配置文件中,通常会配置下列核心内容;
- 读取内部配置文件,例如JDBC参数;
- 配置数据库连接池,例如Druid、C3P0等;
- 整合环境配置,例如SSM或者SSH集成;
- 治理Transaction事务的管制形式;
- 整合罕用组件,例如邮件、工作、MQ等;
在理论开发中,简单的我的项目配置非常繁冗且不好治理,可能我的项目中波及不同环境的配置文件都有几十个,所在在SpringBoot框架中采纳对立约定的形式简化。
9、环境整合SSM、SSH
Spring框架聚合很强的整合能力,例如常见的整合Mybatis,Mvc,Hibernate,Redis等系列组件,为开发环境的集成提供很大的便当,整体职责上分为几层:管制层、业务逻辑层、数据长久层、域模块层、中间件层,以帮忙开发人员在短期内搭建构造清晰、可复用性好、保护不便的Web应用程序。
10、设计模式
单例模式:Spring框架中Bean对象的治理,默认单例,也能够显式标识为多例模式。
工厂模式:通过对应的工厂来生成类的对象,这种设计形式合乎“开闭”准则。Spring框架中BeanFactory和Bean的用法。
适配器模式:SpringMvc执行管制中,前段控制器DispatcherServlet调用处理器适配器去执行Handler,处理器适配器去执行Handler,给适配器返回ModelAndView。
责任链模式:DispatcherServlet外围办法doDispatch。HandlerExecutionChain只是保护HandlerInterceptor的汇合,能够向其中注册相应的拦截器,自身不间接解决申请,将申请调配给责任链上注册处理器执行,升高职责链自身与解决逻辑之间的耦合水平。
二、SpringMvc模式
1、Mvc模式理念
SpringMVC是一种基于Java实现的MVC设计模式的申请驱动类型的轻量级Web框架,出自Spring框架全家桶,与Spring框架无缝整合,应用了MVC架构模式的思维,将Web层进行职责解耦。构造涣散,简直能够在SpringMVC中应用各类视图,各个模块拆散而且耦合度非常低,且易于扩大。与Spring无缝集成,且简略,灵便,容易上手。
2、执行流程
发动申请到前端控制器DispatcherServlet;前端控制器申请HandlerMapping查找,Handler能够依据xml配置、注解进行查找;
处理器映射器HandlerMapping向前端控制器返回Handler;前端控制器调用处理器适配器去执行Handler;处理器适配器去执行Handler;
Handler执行实现给适配器返回ModelAndView;处理器适配器向前端控制器返回ModelAndView,ModelAndView是springmvc框架的一个底层对象,包含Model和view;
前端控制器申请视图解析器去进行视图解析,依据逻辑视图名解析成真正的视图;视图解析器向前端控制器返回View;前端控制器进行视图渲染,视图渲染将模型数据(在ModelAndView对象中)填充到request域中;前端控制器向用户响应后果;
3、外围组件
前端控制器:申请来到浏览器后,最先达到的就是DispatcherServlet,是整个流程管制的核心。
处理器映射器:依据申请的url路由到指定接口,用户申请找到Handler处理器。
处理器适配器:依照特定规定去执行Handler,反对多种处理器,各种处理器中的解决办法各不相同。
处理器:解决用户申请,波及具体业务逻辑,须要依据业务需要开发。
视图解析器:将申请的响应后果生成View,依据逻辑视图名解析成物理视图名,就是具体页面地址。
视图:Mvc框架提供很多的View视图类型的反对,包含:jsp、freemarker、pdf等。
4、参数解决
requestParam:次要用于在SpringMvc框架的管制层获取参数,三个罕用参数:defaultValue示意设置默认值,required 通过boolean设置是否是必须要传入的参数,value值示意传入的参数名称。
RequestBody:接管申请体中传递给后端的Json字符串数据的,GET形式无申请体,所以应用@RequestBody接收数据时,不能应用GET形式提交数据,须要用POST形式进行提交。
ResponseBody:该注解用于办法的返回对象,能够通过配置转换器为指定数据响应格局,如果心愿返回的数据不是View试图页面,而是指定数据格式的时候应用,例如:Json、Xml等。
5、整合Spring框架
- 配置扫描接口文件;
- 启动MVC默认的注解映射的形式;
- 配置视图解析器;
- Web.xml配置加载Spring-Mvc文件;
6、比照WebFlux
响应式编程是一种基于数据流和变动传递的申明式的编程范式,WebFlux是Web管制端响应式编程中的组成部分,在Spring官网上有阐明,不是为了代替SpringMvc,是用来提供更多场景的解决方案。
三、SpringBoot框架
1、罕用根底性能
- 环境搭建和注解启动机制,日志打印;
- 全局异样解决,定时工作异步工作应用;
- 拦截器配置,置AOP切面编程,文件治理;
- 整合JWT、Shiro、Security等罕用平安组件;
- 集成Actuator监控组件,零碎打包运行;
2、整合数据源
- 整合JdbcTemplate,JPA,多数据源配置;
- 集成Druid、C3P0罕用连接池;
- 整合Mybatis框架,集成分页治理;
3、集成罕用中间件
- 集成Redis缓存,Cache注解模式;
- 集成ElasticSearch框架,实现高性能搜索引擎
- 基于Swagger2 ,构建接口治理界面;
整个SpringBoot框架是基于Spring框架之上多个很多约定的标准,底层原理并没有扭转,更多是相熟各种用法,用多就会明确。
四、比照剖析
Spring框架绝对Spring开源生态是最底层的实现原理,SpringMvc是基于之上而来的,次要简化Web管制层的开发,例如之前的Struts、Servlet都逐步被替换。
SpringBoot则在Spring+Mvc根底上,实现很弱小的约定配置,对简单的环境做了约定的集成,简化开发配置,业务性开发还是一样的,在SSM环境下不论我的项目配置启动调试都非常的简单,到SpringBoot层面之后被一直简化,所以SpringBoot学习在了解约定的配置标准后,根本很容易上手。
五、源代码地址
GitHub·地址https://github.com/cicadasmileGitEE·地址https://gitee.com/cicadasmile
举荐浏览:编程体系整顿
序号 | 项目名称 | GitHub地址 | GitEE地址 | 举荐指数 |
---|---|---|---|---|
01 | Java形容设计模式,算法,数据结构 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
02 | Java根底、并发、面向对象、Web开发 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
03 | SpringCloud微服务根底组件案例详解 | GitHub·点这里 | GitEE·点这里 | ☆☆☆ |
04 | SpringCloud微服务架构实战综合案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
05 | SpringBoot框架根底利用入门到进阶 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆ |
06 | SpringBoot框架整合开发罕用中间件 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
07 | 数据管理、分布式、架构设计根底案例 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |
08 | 大数据系列、存储、组件、计算等框架 | GitHub·点这里 | GitEE·点这里 | ☆☆☆☆☆ |