面试题:你知道springboot和springmvc的区别是什么?

之前自己搭过springboot的相关项目,但是如何进行比较,从自我感觉来看就是使用springboot用起来几乎没有配置,个人搭的项目没有用到配置相关的内容。于是我就用了这个回答给面试官,可想而知,这种回答并不好。于是现在百度了相关文章,就把理解写成博客当做笔记。

springmvc从两个方面来看,一是spring,spring的核心中IOC和AOP,IOC就是控制反转(就是将原本由程序代码直接操作的对象的调用权交给容器),目的是为了减低计算机代码的耦合度,所谓的耦合度就是代码中的逻辑关系不要太紧密,避免后面改的人会因为不懂业务逻辑导致改错代码;除此之外也避免我们每次创建新的对象,减少对应的代码量。我们实际代码过程中最常见的方式是依赖注入(DI Dependency Injection),所谓依赖注入就是通过构造注入或者set进行注入。依赖查找(DL Dependency Lookup)这是通过名称和类型查找bean。AOP是面向切面编程,AOP分为五大部分:(1)Aspect(切面):通常是一个类,里面可以定义切入点和通知。(2)JointPoint(连接点):程序执行中明确的点,一般是方法的调用。(3)Advice(通知):AOP在特定的切入点上做出的增强处理,有before,after,afterRunning,afterThrowing,around;(4)Pointcut(切入点):就是带有通知的连接点,在程序中主要体现为书写切入点表达式;(5)AOP代理:AOP框架创建的对象,代理就是目标对象的加强,Spring的AOP可以使用JDK代理,也可以使用CGLIB代理,前者基于接口,后者是基于子类。

通知类型:

(1)Before:在目标方法被调用之前做增强处理,@Before只需要指定切入点表达式即可

(2)AfterReturning:在目标方法正常完成后做增强,@AfterReturning除了指定切入点表达式后,还可以指定一个返回值形参名returning,代表目标方法的返回值

(3)AfterThrowing:主要用来处理程序中未处理的异常,@AfterThrowing除了指定切入点表达式后,还可以指定一个throwing的返回值形参名,可以通过该形参名

来访问目标方法中所抛出的异常对象

(4)After:在目标方法完成之后做增强,无论目标方法时候成功完成。@After可以指定一个切入点表达式

(5)Around:环绕通知,在目标方法完成前后做增强处理,环绕通知是最重要的通知类型,像事务,日志等都是环绕通知,注意编程中核心是一个ProceedingJoinPoint

springboot引入自动配置的概念,让项目配置变得更容易,Spring Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。同时它集成了大量常用的第三方库配置(例如Jackson, JDBC, Mongo, Redis, Mail等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用(out-of-the-box),大部分的SpringBoot应用都只需要非常少量的配置代码,开发者能够更加专注于业务逻辑。Spring Boot只是承载者,辅助开发者简化项目搭建过程的。如果承载的是WEB项目,使用Spring MVC作为MVC框架,那么工作流程和SpringMVC的是完全一样的,因为这部分工作是Spring MVC做的而不是Spring Boot。

springmvc与springboot的联系和区别:

联系:

Spring最初利用工厂模式(DI)和代理模式解耦应用组件,为了解耦开发了springmvc;而实际开发过程中,经常会使用到注解,程序的样板很多,于是开发了starter,这套就是springboot。

区别:

1.springboot是约定大于配置,可以简化spring的配置流程;springmvc是基于servlet的mvc框架,个人感觉少了model中的映射。

2.以前web应用要使用到tomat服务器启动,而springboot内置服务器容器,通过@SpringBootApplication中注解类中main函数启动即可。例如:

package com.bjsxt;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;/*** springBoot整合Listener方式一***/
@SpringBootApplication
@ServletComponentScan
public class App {public static void main(String[] args) {SpringApplication.run(App.class, args);}}

如果您喜欢这篇文章,您的鼓励将是我最大的支持!

springboot和springmvc的区别相关推荐

  1. 形象生动的SpringBoot和SpringMVC的区别

    spring boot只是一个配置工具,整合工具,辅助工具. springmvc是框架,项目中实际运行的代码 Spring 框架就像一个家族,有众多衍生产品例如 boot.security.jpa等等 ...

  2. SpringBoot配置与应用 SpringBoot与(Spring和springmvc的区别)

    1.什么是springboot? springboot与springmvc的区别,springboot代替了springmvc? ssm包含了spring与springmvc还有mybatis. 用到 ...

  3. springboot和springMVC

    Spring 最初利用"工厂模式"(DI)和"代理模式"(AOP)解耦应用组件.大家觉得挺好用,于是按照这种模式搞了一个 MVC框架(一些用Spring 解耦的 ...

  4. 从web.xml谈谈SpringMVC集成spring的初始化流程及SpringBoot集成SpringMVC

    一.关于servlet 详解servlet,https://www.runoob.com/servlet/servlet-tutorial.html 总览一下: servlet与servlet容器 J ...

  5. Spring 和 SpringBoot 比较,解惑区别!

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"1024"获取公众号专属1024GB资料 来源:uee.me/cNDC8 概述 对于 ...

  6. 大剑无锋之SpringBoot和Spring的区别

    SpringBoot和Spring的区别 其实这个问题,在我看来,其关键就是要对SpringBoot相对于Spring的特点阐述: 1.快速整合第三方依赖:maven子父依赖关系. springboo ...

  7. 帮你理清 SpringBoot 与 SpringMVC 的关系

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc.spring mvc 只是spring 处理web层请求的一个模块. ...

  8. 教你理清SpringBoot与SpringMVC的关系

    spring boot就是一个大框架里面包含了许许多多的东西,其中spring就是最核心的内容之一,当然就包含spring mvc.spring mvc 是只是spring 处理web层请求的一个模块 ...

  9. SpringBoot之SpringMVC自动配置

    关于SpringBoot中的SpringMVC自动配置的一些思考 : 自动配置 Spring Boot 自动配置好了SpringMVC 以下是SpringBoot对SpringMVC的默认配置:(We ...

最新文章

  1. 5 项大奖,70 项满分!阿里云全方位引领云原生技术升级
  2. python多维数据划分_【python+机器学习(4)】多维数据的特征选取(RidgeLasso)...
  3. cordova报错“No installed build tools found. Install the Android build tools version - ”
  4. 125 Valid Palindrome
  5. 开发宝典:基于分布式对象的网游程序结构设计
  6. Linux中hosts文件的修改
  7. HTML+CSS+JS制作炫酷特效代码
  8. Android布局——小米便签编辑界面xml
  9. Java 基础常见面试题大全
  10. 企业使用邮箱的重要性
  11. HP大中华区总裁孙振耀退休感言
  12. jinjia2 模板库- django/flask
  13. c语言自我介绍范文,个性的自我介绍范文5篇
  14. 计算机信息系统安全管理包括什么,计算机信息系统的运行安全包括什么
  15. 【阅读笔记】精益开发实践用看板管理大型项目
  16. AcWing 4783. 多米诺骨牌
  17. 21天学会c++(英汉对照,个人翻译,水平有限,供参考)-------第2天
  18. tranmac不能识别_怎么用transmac制作mac安装盘|transmac制作苹果系统启动U盘方法
  19. 【广东开放大学(广东理工职业学院)主办】第二届计算机图形学、人工智能与数据处理国际学术会议(ICCAID 2022)
  20. ABAQUS均布载荷的悬臂梁静力学计算

热门文章

  1. ubuntu怎么添加中文输入法
  2. Ardunio开发实例-TCS3200颜色传感器
  3. ctfshow mics49
  4. TCP/IP详解--TCP传输小数据包效率问题
  5. matlab 斜抛 空气阻力,运用MATLAB对运动学、动力学问题进行过程分析
  6. 《月下独酌》 作者:李白
  7. uniapp项目引入外部js方法
  8. 前端性能分析工具:dynaTrace Ajax Edition
  9. 持续集成/持续交付(CI/CD)
  10. Windows批处理 - 用笔记本开WiFi