面试集锦(三)spring

本文深入讲解Spring MVC的工作流程,包括请求处理、AOP应用场景及实现原理。同时对比Spring Boot与Spring MVC的区别,并介绍Spring Boot的特点及其自动配置原理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

spring mvc实现原理

  1. 客户端发送请求到dispacherservlet(分发器)
  2. 有dispacherservlet控制器查询handemapping,找到处理请求的controller
  3. controller处理完请求后,返回modelandview
  4. 有dispacherservlet查询试图解析器,找到modelandview制定的视图
  5. 视图负责将结果展示给客户端

spring aop的应用场景

  1. 性能检测
  2. 访问控制,安全控制
  3. 日志管理
  4. 事务

spring aop的实现原理

 AOP是基于动态代理实现的

代理的三种方式

  • 静态代理
  • JDK动态代理
  • CGLIB代理

spring mvc拦截器和处理全局异常

拦截器

  1. 实现handlerInterceptor接口
  2. 重写preHandle方法,验证是不是管理员
  3. 在dispacter-servelt.xml中配置会拦截的请求(过滤器是在web.xml中)

处理全局异常

  1. 实现handlerExceptionResolver接口
  2. 重写resolveException方法,返回的是modelandview对象,在系统抛异常时给用户友好的提示

spring boot和spring mvc区别

  1. spring mvc需要配置大量的xml文件,而boot能实现自动配置
  2. boot内嵌服务器
  3. boot集成大量第三方配置库,开箱即用

spring boot特点

  1. 创建独立的Spring应用程序
  2. 嵌入的Tomcat,无需部署WAR文件
  3. 简化Maven配置
  4. 自动配置Spring
  5.  提供生产就绪型功能,如指标,健康检查和外部配置
  6.  绝对没有代码生成和对XML没有要求配置

常见的starter

    1.web
    2.test
    3.jpa
    4.redis
    5.mybatis
    6.jdbc
    7.mail
    8.thymeleaf
    9.security
    10.websocket
复制代码

spring ioc

1.注入的三种方式

  •           属性注入(setter方法)
  •           构造注入
  •           接口注入

2.ioc容器通过反射机制,实例化bean并建立bean之间的依赖关系

Bean就是由Spring IOC容器初始化、装配及被管理的对象。

拦截器和过滤器的区别和联系

过滤器

依赖于servlet容器,几乎对所有请求都可以过滤,缺点是一个过滤器实例只能初始化一次,通常做一些过滤操作,获取我们想要的数据

拦截器

只能对controller进行拦截,依赖与web框架所以可以调用spring的依赖注入,不依赖于servlet容器,基于反射机制,属于aop的一种应用

spring boot自动配置原理

在spring的启动类上添加@springbootapplication或@enableAutoConfiguration注解,会自动的去meaven中读取每个stater中的spring.factories文件,该文件配置了所有需要被创建spring容器中的bean

spring中运用到的设计模式

  • bean单例模式
  • beanfactory工厂模式
  • aop动态代理 代理模式
  • 观察者模式

Spring通过@Transaction注解技术来进行声明式事物配置。

spring Bean的生命周期

spring 只提替我们管理单例模式的bean,对于prototype模式的bean,spring创建后就不再管理,需要使用者手动去管理

生命周期图

生命周期

        实例化

--->填充属性

--->调用各种 *Aware接口                                  详细请看spring bean的生命周期

--->调用定制的初始化方法

--->bean准备就绪

--->调用定制的bean销毁方法

初始化及销毁

  1. 注解方式:在 bean 初始化时会经历几个阶段,首先可以使用注解 @PostConstruct, @PreDestroy 来在 bean 的创建和销毁阶段进行调用
  2. 实现initializingBean,DisposableBean接口也可以实现对Bean的初始化及销毁操作。
  3. 当然也可以自定义初始化和销毁的方法

实现*Aware接口

*Aware 接口可以用于在初始化 bean 时获得 Spring 中的一些对象


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值