Spring简介

描述
  • 轻量级的控制反转和面向切面的容器框架
  • 轻量级:如果一个框架没有侵入性,就说该框架是轻量级的。
  • 侵入性:如果使用一个框架,必须实现框架提供的接口,或者继承框架提供的类,那么就说这个框架具有侵入性。
  • IOC:控制反转,将对象的创建过程交给Spring容器,由容器管理对象的生命周期;
  • AOP:面向切面编程,将核心业务功能与周边功能分离,周边功能如记录日志,创建记录日志的代理方法,需要该功能时调用代理方法即可;
  • Spring MVC:基于MVC设计模式的Web框架。
特点描述
方便解耦,简化开发通过IOC容器将对象之间的依赖关系交由Spring进行控制
集成各种优秀的框架MyBatis、MVC等
aop编程的支持
声明式事务的支持
测试方便对JUnit4支持,方便测试Spring程序
降低API的使用难度通过Spring的简易封装实现,如JDBC、远程调用等

体系结构

在这里插入图片描述

<1> 核心容器
模块描述
spring-core提供了框架的基本组成部分,包括控制反转和依赖注入功能
spring-beans提供了BeanFactory,是工厂模式的一个经典实现,Spring将管理对象称为Bean
spring-expression提供了表达式语言,用于在运行时查询和操作对象
spring-context上下文,即IoC容器,它扩展了BeanFactory,为它添加了Bean生命周期管理、框架事件体系等功能
<2> AOP和Instrument
模块描述
spring-aop面向切面编程;在某一个类或方法执行前后做标记,声明在执行到这之前或之后要先执行什么操作
spring-aspects集成AspectJ, 主要是为Spring AOOP提供多种AOP实现方法
spring-instrument提供一些类级的工具支持和ClassLoader级的实现,用于服务器
<3> 数据访问/集成
模块描述
spring-jdbc对jdbc的支持
spring-tx支持用于实现特殊接口和所有POJO(普通Java对象)类的编程和声明式事务管理
spring-orm对象关系映射,提供集成层,包括JPA和Hibernate
spring-oxm对象xml映射
spring-jmsjava消息服务,包含用于生产和使用消息的功能
<4> Web
模块描述
spring-web提供最基础的web支持,主要建立在核心容器上,通过Servlet或者Listener来初始化IOC容器,也包括一些与Web相关的支持。
spring-webmvc实现了Spring MVC的Web应用
spring-websocket提供了客户端和服务器端之间通信的两种方式
spring-webflux一个新的非阻塞式Reactive Web框架,可以用来建立异步、非阻塞、事件驱动的服务,扩展性好
<5> 其他
模块描述
Spring-test支持使用JUnit或TestNG对Spring组件进行单元测试和集成测试
spring-messaging提供了对消息传递体系结构和协议的支持

事务管理

  • 对一系列数据库操作进行管理(统一的提交或回滚操作),若过程中有一处操作失败则回滚之前所有操作
  • 编程式事务管理:通过编程的方式管理事务,灵活性大,但是极难维护
  • 声明式事务管理:将事务管理和业务分离,通过注解或XML配置来管理事务
SpringMVC工作流程

  1. 用户发送请求给前端控制器DispatcherServlet,前端控制器调用处理器映射器HandlerMapping;
  2. 处理器映射器找到具体处理器,生成处理器对象返回给前端控制器;
  3. 前端控制器调用处理器适配器HandlerAdapter,处理器适配器调用具体处理器Handler(或Controller,也叫后端控制器);
  4. 处理器执行完返回ModelAndView给处理器适配器,处理器适配器再将其返回给前端控制器;
  5. 前端控制器将ModelAndView传给视图解析器ViewReslover解析,解析后返回视图View;
  6. 前端控制器对View渲染视图(即将模型数据填充至视图中),后响应给用户。
Spring配置文件内容

  • 开启注解功能,并配置扫描包
  • 开启事务注解驱动
  • 事务管理器
  • 配置数据源
  • 配置SQL会话工厂,别名,映射文件
Spring 注解

  • @Service:类使用时表示自动注册到spring容器
  • @Resource:实现依赖注入,自动装配(默认byName)
  • @Controller:标识一个类为控制器
  • @RestController:相当于@ResponseBody + @Controller,标识一个类为控制器,且方法返回值默认转为json格式
  • @ResponseBody:将方法返回值转换成json格式
  • @ResquestMapping:用于类与方法上,表示处理请求地址映射
注解原理

  • 注解本质是一个继承了Annotation的特殊接口,其具体实现类是Java运行时生成的动态代理类。通过反射获取注解时,返回的是Java运行时生成的动态代理对象。
  • 通过代理对象调用自定义注解的方法,会最终调用AnnotationInvocationHandler的invoke方法。该方法会从memberValues这个Map中索引出对应的值。而memberValues的来源是Java常量池。
其他

<1>在拦截请求中,拦截get方式提交的方法时怎样配置?

  • 在注解@ResquestMapping里面加上method=RequestMethod.GET。

<2>如果前台有很多个参数传入,并且这些参数都是一个对象的,那么怎么样快速得到这个对象?

  • 在方法中申明这个对象,SpringMVC会自动把属性赋值到这个对象里面。

<3>SpringMVC中函数的返回值是什么?

  • 有String, ModelAndView等,一般用String。

<4>SpringMvc用什么对象从后台向前台传递数据的?

  • 通过ModelMap对象,可以在这个对象里面调用put方法,把对象加到里面,前台就可以通过el表达式拿到。
  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值