一、什么是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 (或许不完整)的更多相关文章

  1. 深入浅出JMS(四)--Spring和ActiveMQ整合的完整实例

    第一篇博文深入浅出JMS(一)–JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文深入 ...

  2. SSM ( Spring 、 SpringMVC 和 Mybatis )配置详解

    使用 SSM ( Spring . SpringMVC 和 Mybatis )已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没 ...

  3. JMS【四】--Spring和ActiveMQ整合的完整实例

    第一篇博文JMS[一]--JMS基本概念,我们介绍了JMS的两种消息模型:点对点和发布订阅模型,以及消息被消费的两个方式:同步和异步,JMS编程模型的对象,最后说了JMS的优点. 第二篇博文JMS[二 ...

  4. spring整合springmvc和hibernate

    上篇文章使用maven搭建了web环境,这篇来记录下如何使用spring整合springmvc和hibernate,亦即spring+springmvc+hibernate框架整合. 第一步:首先配置 ...

  5. Spring与SpringMVC的区别

    Spring是IOC和AOP的容器框架,SpringMVC是基于Spring功能之上添加的Web框架,想用SpringMVC必须先依赖Spring. 简单点的话可以将SpringMVC类比于Strut ...

  6. spring mybatis springmvc整合

    使用SSM(Spring.SpringMVC和Mybatis)已经有三个多月了,项目在技术上已经没有什么难点了,基于现有的技术就可以实现想要的功能,当然肯定有很多可以改进的地方.之前没有记录SSM整合 ...

  7. Spring 、SpringMVC 、Struts2之间的区别

    一.Spring与SpringMVC的区别: spring是一个开源框架,是为了解决企业应用程序开发,功能如下: 功能:使用基本的JavaBean代替EJB,并提供了更多的企业应用功能 范围:任何Ja ...

  8. 【spring】- springmvc 工作原理

    原理 本质是将DispatcherServlet及关联的Spring上下文环境的初始化工作织入Servlet的生命周期内,将外部WEB请求转换为Spring Bean能处理的形式,然后将处理后的结果借 ...

  9. Spring和ActiveMQ整合的完整实例

     Spring和ActiveMQ整合的完整实例 前言 这篇博文,我们基于Spring+JMS+ActiveMQ+Tomcat,做一个Spring4.1.0和ActiveMQ5.11.1整合实例,实现了 ...

  10. Java工程师学习指南第3部分:Spring与SpringMVC源码解析

    本文整理了微信公众号[Java技术江湖]发表和转载过的Spring全家桶优质文章,想看到更多Java技术文章,就赶紧关注吧. 前后端分离,我怎么就选择了 Spring Boot + Vue 技术栈? ...

随机推荐

  1. [转]Linux操作系统tcpdump抓包分析详解

    PS:tcpdump是一个用于截取网络分组,并输出分组内容的工具,简单说就是数据包抓包工具.tcpdump凭借强大的功能和灵活的截取策略,使其成为Linux系统下用于网络分析和问题排查的首选工具. t ...

  2. 微信 SQLite 数据库修复实践

    1.前言 众所周知,微信在后台服务器不保存聊天记录,微信在移动客户端所有的聊天记录都存储在一个 SQLite 数据库中,一旦这个数据库损坏,将会丢失用户多年的聊天记录.而我们监控到现网的损坏率是0.0 ...

  3. 如何用kaldi做孤立词识别二

    基本模型没有变化,主要是调参,配置: %WER     65%  下降到了     15% 后面再继续优化... Graph compilation finish!steps/decode.sh -- ...

  4. BCrypt加密算法

    用户表的密码通常使用MD5等不可逆算法加密后存储,为防止彩虹表破解更会先使用一个特定的字符串(如域名)加密,然后再使用一个随机的salt(盐值)加密. 特定字符串是程序代码中固定的,salt是每个密码 ...

  5. 快速入门node.js

    运行node node ./1.js let不存在变量提升 /* const fs = require('fs') const path = require('path') fs.readFile(p ...

  6. system libzip must be upgraded to version >= 0.11

    PHP当前最新版本是PHP7.3,今天在尝试安装的过程中报如下错误: system libzip must be upgraded to version >= 0.11, 根据提示我们可以清楚的 ...

  7. 边学边做,简单的 GraphQL 实例

    项目中有功能要调用 API,对方 API 用的是 GraphQL 实现,就简单学了下,感叹技术进步真快,Facebook 发明的这玩意儿咋这么牛逼,使前端开发人员变得主动起来,想要什么接口.返回什么结 ...

  8. Spring Boot 主类及目录结构介绍

    Spring Boot 与传统项目最大的区别是,传统项目都是打成 WAR 包部署到服务器上面,需要额外的 Servlet 容器, 而 Spring Boot 则可以直接打成 jar 包,并内置集成了 ...

  9. 全网最详细的一款满足多台电脑共用一个鼠标和键盘的工具Synergy(图文详解)

    不多说,直接上干货! 前言 如今无论你是在公司做大数据开发还是实验室里搞科研,这个软件确实好用,作为正在通往大数据架构师路上的我们没有几台电脑怎么行?台式机.笔记本,都放在写字台上,笔记本内置键盘鼠标 ...

  10. 在vue项目中添加特殊字体

    这里的特殊字体,指的是一般用户电脑未安装到本地的字体,要引入这样的字体,首先需要把字体文件下载下来. 就像上图这样的,ttf格式的,然后在项目里添加它. 然后我们在font.css里用@font-fa ...