https://www.toutiao.com/article/7088616970362487329/
spring是一个非常优秀的java框架,99%的公司都在使用,spring算是必备技能,所以一定要掌握好@mikechen
Spring是一个基于控制反转IOC和面向切面编程AOP的轻量级开源框架。
Spring它是由一个叫做Rod Johnson的音乐学博士在2002年提出并创建的,他提出了著名的轮子理论,就是:不要重复发明轮子。
Spring之所以叫做Spring,就是它期望给软件行业带来一个春天,让我们的开发变得更加简单更加快速。
Spring致力于JavaEE应用各层的解决方案,是企业应用一站式开发很好的选择,在表现层它提供了Spring MVC以及整合Struts的功能,在业务逻辑层可以管理事务、记录日志等,在持久层可以整合Hibernate、Mybatis等框架。
虽然Spring贯穿表现层、业务逻辑层、持久层,但Spring并不是要取代那些已有的优秀框架,而是可以高度开放的与其它优秀框架无缝整合。
Spring是一种非侵入式(no-invasive)框架,它可以使应用程序代码对框架的依赖最小化。
Spring是一个大工厂,可以将所有 对象的创建、依赖关系的维护 交给Spring容器管理,大大降低了组建之间的耦合。
IOC——Inversion of Control控制反转,指的是将对象的创建权交给 Spring 去创建。
使用 Spring 之前,对象的创建都是由我们自己在代码中new创建,而使用 Spring 之后。对象的创建都是给了 Spring 框架。
AOP面向切面编程,主要应用在比如:安全、事务、日志等,进行集中式管理,从而提高程序的复用性。
通过配置就可以完成对事务的管理,无需手动编程。
Spring可以与大多数框架无缝整合。
Spring框架至今已集成了20多个模块,这些模块分布在以下模块中:
Spring体系结构如下图:
Spring有七大功能模块,分别是Spring Core,AOP,ORM,DAO,MVC,WEB,Context。
Spring的核心容器是其他模块建立的基础,有Spring-core、Spring-beans、Spring-context、Spring-context-support和Spring-expression(String表达式语言)等模块组成。
核心容器提供Spring框架的基本功能,spring以bean的方式组织和管理Java应用的各个组件及其关系,spring使用BeanFactory来产生和管理Bean,是工厂模式的实现。
BeanFactory通过控制反转(IOC)模式将应用程序的配置和依赖性(类与类之间的关系)规范 与 实际的应用程序代码分开(尤指业务代码),从而降低了类与类之间的耦合度。
如果想更加深入了解SpringIOC的底层实现,请点击查看搞透IOC,Spring IOC看这篇就够了!
AOP的实现原理为动态代理技术
比如典型的AOP的应用场景:
Spring AOP 采用了两种混合的实现方式:JDK 动态代理和 CGLib 动态代理。
如果想更加全面深入的了解AOP,请点击查看Spring AOP全面详解(超级详细)
Spring上下文是一个配置文件,向spring提供上下文信息,spring上下文包括企业服务。
Web层由Spring-web、Spring-webmvc、Spring-websocket和Portlet模块组成。
提供了一个JDBC的抽象层和异常层次结构,消除了烦琐的JDBC编码和数据库厂商特有的错误代码解析, 用于简化JDBC。
Spring插入了若干个ORM框架,提供了ORM对象的关系工具,其中包括Hibernate,JDO和IBatisSQL Map等,所有这些都遵从Spring的通用事务和DAO异常层次结构
MVC框架是一个全功能的构建Web应用程序的MVC实现。
Spring的MVC框架提供清晰的角色划分:控制器、验证器、命令对象、表单对象和模型对象、分发器、处理器映射和视图解析器,Spring支持多种视图技术。
Spring MVC 的工作流程:
(1) 客户端发送请求,请求到达 DispatcherServlet 主控制器。
(2) DispatcherServlet 控制器调用 HandlerMapping 处理。
(3) HandlerMapping 负责维护请求和 Controller 组件对应关系。 HandlerMapping 根据请求调用对应的 Controller 组件处理。
(4) 执行 Controller 组件的业务处理,需要访问数据库,可以调用 DAO 等组件。
(5)Controller 业务方法处理完毕后,会返回一个 ModelAndView 对象。该组件封装了模型数据和视图标识。
(6)Servlet 主控制器调用 ViewResolver 组件,根据 ModelAndView 信息处理。定位视图资源,生成视图响应信息。
(7)控制器将响应信息给用户输出。
以上!