Spring 与 SpringMVC (或许不完整)
一、什么是Spring
Spring
是一个开源的控制反转和面向切面(AOP)的容器框架。它的主要目的是使现有技术更加易用,推荐编码最佳实现,从而简化企业的开发。
提:使用Spring的好处有以下几项:
1.
降低组件之间的耦合度,实现软件各层之间的解耦合
2.
Spring 对于主流的应用框架提供了集成支持
3.
Spring容器提供了众多辅助类,使用这些类能够加快应用程序的开发
4.
Spring容器提供了 AOP 技术,使用它很容易实现如权限拦截等功能
5.
Spring可以使用容器提供的众多服务,如事务管理服务等
6.
Spring容器提供了对单例模式支持,不需要开发者自己写代码实现
提:Spring
包含模块的七大模块有:
1.
核心容器模块、Spring 上下文模块、Spring AOP模块、Spring ORM模块、Spring DAO模块、Spring Web模块、Spring MVC模块
提:什么是依赖注入、控制反转、依赖
1.
依赖注入:依赖注入是指在运行期,由外部容器动态地将依赖对象注入到组件中。依赖注入让 Bean 与 Bean 之间以配置文件组织在一起,而不是以硬编码的方式耦合在一起。
2.
控制反转:在传统的程序设计过程中,都是在应用内部创建及维护依赖的对象。控制反转就是应用本身不负责依赖对象的创建及维护,依赖对象的创建及维护是由外部容器负责的。这样控制权就由应用转移到外部容器,控制权的转移就是控制反转。
3.
依赖:在两个元素中一个定义发生改变则另一个元素也会随着改变,则称这两个元素之间存在依赖关系。
提:Spring AOP的核心概念
1.
Aspect(切面):切面,是对交叉业务逻辑的统称。
2.
Joinpoint(连接点):连接点,指切面可以织入到目标对象的位置(方法,属性等)。
3.
Advice(通知):通知,指切面的具体实现。
4.
Pointcut(切入点):切入点,指通知应用到哪些类的哪些方法或属性之上的规则。
5.
Introduction(引入):引入,指动态地给一个对象增加方法或属性的一种特殊的通知。
6.
Weaving(织入):织入,指将通知插入到目标对象。
7.
Target(目标对象):目标对象,指需要织入切面的对象。
提:实际开发过程中开发者为什么要拆分Spring的配置文件
1. 当项目规模大的时候,配置文件可读性、可维护性差,庞大的 Spring 配置文件难以阅读。
2. 团队开发时,多人修改同一配置文件容易发生冲突,降低开发效率。
二、Spring MVC 工作机制
1. SpringMVC 请所有的请求都提交给DispatcherServlet(核心控制器),它会委托给应用系统
的其他模块负责对请求进行真正的处理工作。
2. DispatcherServlet 查询一个或多个
HandleMapping,找到处理请求的Controller。
3. DispatchServlet请求提交到目标 Controller。
4. Controller 进行业务逻辑处理后,会返回一个ModelAndView。
5. Dispatcher 查询一个或多个ViewResolver视图解析器,找到ModelAndView对象指定的视图对象。
6. 视图对象负责渲染返回给客户端。
Spring 与 SpringMVC (或许不完整)的更多相关文章
- 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例
第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...
- SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解
使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...
- JMS【四】--Spring和ActiveMQ整合的完整实例
第一篇博文JMS[一]--JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文JMS[二 ...
- spring整合springmvc和hibernate
上篇文章使用maven搭建了web环境,这篇来记录下如何使用spring整合springmvc和hibernate,亦即spring+springmvc+hibernate框架整合. 第一步:首先配置 ...
- Spring与SpringMVC的区别
Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring. 简单点的话可以将SpringMVC类比于Strut ...
- spring mybatis springmvc整合
使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...
- Spring 、SpringMVC 、Struts2之间的区别
一.Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Ja ...
- 【spring】- springmvc 工作原理
原理 本质是将DispatcherServlet及关联的Spring上下文环境的初始化工作织入Servlet的生命周期内,将外部WEB请求转换为Spring Bean能处理的形式,然后将处理后的结果借 ...
- Spring和ActiveMQ整合的完整实例
Spring和ActiveMQ整合的完整实例 前言 这篇博文,我们基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了 ...
- Java工程师学习指南第3部分:Spring与SpringMVC源码解析
本文整理了微信公众号[Java技术江湖]发表和转载过的Spring全家桶优质文章,想看到更多Java技术文章,就赶紧关注吧. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈? ...
随机推荐
- DICOM医学图像处理:WEB PACS初谈四,PHP DICOM Class
背景: 预告了好久的几篇专栏博文一直没有整理好,主要原因是早前希望搭建的WML服务器计划遇到了问题.起初以为参照DCMTK的官方文档wwwapp.txt结合前两天搭建的WAMP服务器可以顺利的实现WM ...
- UglifyJs打包压缩问题引起的思考
问题背景 最近做了一个webapp项目,qa用手机测试功能时,在iphone6plus上表现是白屏,其他手机目测是ok的:因为之前在测试其他项目时也发现在这个iphone6上表现与其他手机不太一样.于 ...
- 【sql注入教程】SQL注入是什么?我们如何去玩转它
[sql注入教程]SQL注入是什么?我们如何去玩转它 本文转自:i春秋社区 SQL注入攻击是黑客攻击数据库最常见手段之一.简单讲,SQL注入攻击是黑客利用网站程序漏洞,通过提交精心构造的SQL语句 ...
- 解决微信小程序登录与发布的一些问题
解决微信小程序的问题 图片在电脑上显示但在手机上却无法显示的问题 要使用的是本地图片,不想把图片上传到网络再通过https的方式解决,解决方法如下: 1.image src中的图片地址对英文字母大小写 ...
- dubbo实用知识点总结(二)
1. 参数验证 2. 结果缓存 3. 泛化引用 客户端没有对应接口类的情况,可以直接调用 4. 泛化实现 5. 回声测试 用于检测服务是否可用 6. 上下文信息 7. 隐式传参(不常用) 8. 异步调 ...
- JavaScript 数组方法
数组方法: 1.Array.join([param]) 方法:将数组中所有的元素都转换为字符串并连接起来,通过字符 param 连接,默认使用逗号,返回最后生成的字符串 2.Array.reverse ...
- 使用 Helm 包管理工具简化 Kubernetes 应用部署
当在 Kubernetes 中已经部署很多应用时,后续需要对每个应用的 yaml 文件进行维护操作,这个过程会变的很繁琐,我们可以使用 Helm 来简化这些工作.Helm 是 Kubernetes 的 ...
- Docker概念学习系列之详谈Docker 的核心组件与概念(5)
不多说,直接上干货! 见[博主]撰写的https://mp.weixin.qq.com/s/0omuSAjF5afJBZBxhbKTqQ 想要了解Docker,就必须了解Docker的五大核心概念 ...
- [NewLife.XCode]增删改查入门
NewLife.XCode是一个有10多年历史的开源数据中间件,由新生命团队(2002~2019)开发完成并维护至今,以下简称XCode. 整个系列教程会大量结合示例代码和运行日志来进行深入分析,蕴含 ...
- Cannot retrieve metalink for repository: epel/x86_64. Please verify its path and try again 解决方法
vim /etc/yum.repos.d/epel.repo 1 [epel] 2 name=Extra Packages for Enterprise Linux 7 - $basearch 3 # ...