spring是一个轻量级的控制反转(IOC)和面向切面(AOP)的容器(框架)
优点:
- 开源免费的容器框架
- 轻量级的框架,非侵入式的
- 控制反转IOC,面向切面AOP
- 对事物的支持,对框架的支持
spring是一个分层架构,由7个良好的模块组成。spring的模块建立在核心容器上,核心容器定义了创建、配置、管理bean的方式。
- 核心容器Spring Core
核心容器提供Spring框架的基本功能。核心容器的主要组件是BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转(IOC)模式,将应用程序的配置和依赖性规范与实际的应用程序代码分开。 - Spring上下文Spring Context
Spring上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。 - Spring AOP
通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。可以很容易地使 Spring框架管理的任何对象支持AOP。Spring AOP模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。 - Spring DAO
JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。 - Spring ORM
Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括JDO、Hibernate和iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。 - Spring Web
Web上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以Spring 框架支持与 Jakarta Struts的集成。Web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。 - Spring MVC框架
MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。
控制反转(Inversion of Control)是一种通过描述(XML或注解)并通过第三方去生产或获取特定对象的方式。在Spring中实现控制反转的是IoC容器,其实现方法是依赖注入(Dependency Injection,DI)。
控制 : 谁来控制对象的创建 , 传统应用程序的对象是由程序本身控制创建的 , 使用Spring后 , 对象是由Spring来创建的 反转 : 程序本身不创建对象 , 而变成被动的接收对象 . 依赖注入 : 就是利用set方法来进行注入的. 依赖 : 指Bean对象的创建依赖于容器 . Bean对象的依赖资源 . 注入 : 指Bean对象所依赖的资源 , 由容器来设置和装配 . 核心:IOC是一种编程思想,由主动的编程变成被动的接收,对象由Spring 来创建 , 管理 , 装配 !4.AOP 面向切面编程
AOP(Aspect Oriented Programming)意为:面向切面编程,通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
Spring AOP有三要素: 1. Aspect定义切面; 2. 通过通知(Advice)来指定具体做什么事情。如方法执行前做什么,方法执行后做什么,抛出异常做什么,从而实现对象行为(方法)的增强; 3. 具体通过切点(PointCut)配置切点表达式(expression)来指定在哪些类的哪些方法上织入(ware)横切逻辑;被切的地方叫连接点(JoinPoint) Spring框架实现了AOP面向切面,其引入了第三方AspectJ框架来具体实现。 AspectJ提供了五种切入方式,术语称为通知advice。 具体五种为: 1. 前置通知before 2. 后置通知after 3. 环绕通知around 4. 返回后通知afterReturning 5. 异常通知afterThrowingSpring MVC 1.概述
Spring MVC就是基于MVC设计模式来实现的轻量级 Web 开发框架。 在MVC设计模式中认为, 任何软件都可以分三层: 数据处理模型(Model) 负责展示数据的视图(View) 控制层(Controller)2.Servlet机制
Servlet(Server Applet)是Java Servlet的简称,称为小服务程序或服务连接器,用Java编写的服务器端程序,具有独立于平台和协议的特性,主要功能在于交互式地浏览和生成数据,生成动态Web内容。
总结: Servlet是JAVA实现前后端数据交互的一种机制
核心对象
1.Request对象
2.Response对象
- 前端控制器 DispatcherServlet 实现请求的流转
- 处理器映射器 实现了请求路径与方法之间的映射.
- 处理器适配器 处理器的管理器 内部有N个处理器. 针对不同的用户请求 调用不同的处理器完成任务
- 视图解析器 直线页面路径的拼接
父子容器概念:
- Spring容器(内存中的一大块空间)由于IOC/DI的机制,可以作为第三方的管理者 所以作为父级.
- SpringMVC容器,其中只负责Controller层的相关的对象的管理.
说明: 当SpringMVC容器启动时,提前将SpringMVC中的所有请求路径方法方法完成映射.
SpringMVC运行流程说明
- 用户发起请求时,第一步经过前端控制器,
- 但是前端控制器 只负责请求的转发和响应.不做任何业务处理.将请求转发给处理器映射器.
- 处理器映射器接收到前端控制器的请求之后,查询自己维护的服务列表信息.
a. 如果服务列表中没有这个URL的key. 该程序不能处理用户的请求,则返回特定数据,前端控制器接收之后响应用户404.
b. 如果服务列表中有该URL key 则说明请求可以正常执行. 将该方法的对象返回给前端控制器. - 前端控制器将返回的方法进行接收,但是由于前端控制器只负责转发和响应,不能直接执行该方法.所以交给处理器适配器执行.
- 处理器适配器根据方法的类型(xml配置文件/注解/其他方法),处理器适配器在自己的处理器库中挑选一个最为合适的处理器去执行该方法. 当处理器执行该方法时标识业务开始. 将最终的处理的结果通过ModelAndView对象进行包裹,返回给前端控制器.
ModelAndView: Model: 代表服务器返回的业务数据 View: 服务器端返回的页面的名称 - 视图解析器 将View中的数据进行解析 拼接一个完整的页面路径 前缀/hello后缀
- 视图渲染: 将数据与页面进行绑定. 这样用户就可以在页面中看到具体的数据.
- 由于现在流行前后端分离. 所以SpringMVC省略了视图解析和视图渲染.只有前5步. 核心注解: @ResponseBody 省略6-7步
SpringBoot官网已经将主流的框架进行整合.用户使用时无需多余的配置 拿来就用.既开箱即用
2.pom.xml文件SpringBoot 中pom.xml文件 只是添加了jar包文件的依赖. 存储到项目中,需要被其他程序调用才能生效.
3.SpringBoot中常见启动项(依赖):1.spring-boot-starter-web
2.spring-boot-starter-text
3.spring-boot-starter-jdbc
4.spring-boot-starter-aop
说明: SpringBoot程序启动的实质 注解开始工作.
5. 启动项执行过程 6.SpringBoot主启动类加载过程


