springboot和springmvc的区别

面试题:你知道springboot和springmvc的区别是什么?
springMVC解答要从两个方面来看:
spring的核心中IOC和AOP,IOC就是控制反转(就是将原本由程序代码直接操作的对象调用权交付给容器),目的是为了降低计算机代码耦合度。

创建一个对象需要显式的new出来,但是控制反转是在容器初始化(或者某个指定时间节点)时通过反射机制创建好对象,在使用时去容器中获取。将对象的控制权反过来交给容器管理,所以称之为“控制反转”。

IOC容器是怎么实现的呢?

IOC容器的底层实现其实是工厂模式,通过工厂模式和反射机制,根据XML中给出的类名生成相应的对象。其实IOC容器的实现很简单,就是一个HashMap;

依赖注入(DI,Dependency Injection)和依赖查找(Dependency Lookup)是什么?
依赖注入和依赖查找是IoC的两种主要实现方式,我直接把依赖查找给扔了没去理解他,一般会把IoC和DI放在一起说。

其实可以把DI和IoC理解为同一件事,都是把创建实例的控制权交给容器来操作,只是两种叫法的角度不同:
控制反转是从代码操作对象的角度来看,将操作对象的控制权反转交给了容器。
依赖注入是从容器的角度看,我把你需要的对象或属性注入到你代码中去。

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函数启动即可。

spring的原理和组成
Spring为简化我们的开发工作,封装了一系列的开箱即用的组件功能模块,包括:Spring JDBC 、Spring MVC 、Spring Security、 Spring AOP 、Spring ORM 、Spring Test等
在这里插入图片描述
SpringMVC的原理和组成
SpringMVC是属于SpringWeb里面的一个功能模块(SpringWebMVC)。专门用来开发SpringWeb项目的一种MVC模式的技术框架实现

在这里插入图片描述
MVC:Model(模型)、VIew(视图)、Controller(控制器);我们从开始接触并学习javaWeb开发就知道MVC这一种架构

SpringBoot的原理和特性
Spring Boot基本上是Spring框架的扩展,它消除了设置Spring应用程序所需的XML配置,为更快,更高效的开发生态系统铺平了道路。
Spring Boot中的一些特点:

创建独立的spring应用。

  1. 嵌入Tomcat, JettyUndertow 而且不需要部署他们。
  2. 提供的“starters” poms来简化Maven配置。
  3. 尽可能自动配置spring应用。
  4. 提供生产指标,健壮检查和外部化配置。
  5. 绝对没有代码生成和XML配置要求。

在这里插入图片描述
SpringBoot是包含了Spring的核心(IOC)和(AOP);以及封装了一些扩展,如Stater:
在这里插入图片描述

  • 21
    点赞
  • 116
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值