网站首页 > 技术文章 正文
一.有哪些类型的通知(Advice)?
Before : 这些类型的Advice在poinPoint方法之前执行,并使用@Before注解标记进行配置。
After Returning:这些类型的Advice在连接点方法正常执行后执行,并使用@AfterReturning注解标记进行配置。
After Throwing:这些类型的Advice仅在joinpoint方法通过抛出异常退出并使用@AfterThrowing注解标记配置时执行。
After(finally):这些类型的Advice在连接点方法之后执行,无论方法退出是正常还是异常返回,并使用@After注解标记进行配置。
Around : 这些类型的Advice在连接点之前和之后执行,并使用@Around注解标记进行配置。
二.指出在Spring AOP 中 concern和corss-cutting concern的不同之处?
concern是我们想要在应用程序的特定模块中定义的行为。它可以定义为我们想要实现的功能。
cross-cutting concern是一个是适用于整个应用的行为,这会影响整个应用程序。例如,日志记录,安全性和数据传输是应用程序几乎每个模块都需要关注的问题,因为它们是跨领域的问题。
三.AOP 有哪些实现方式?
实现AOP的技术,主要分为两大类:
静态代理
指使用AOP框架提供的命令进行编译,从而在编译阶段就 可以生成AOP代理类,因此也称为编译时增强;
编译时编织(特殊编译器实现)
类加载时编织(特殊的类加载器实现)
动态代理
在运行时在内存中“临时”生成AOP动态代理类,因此也被称为运行时增强。
JDK动态代理
CGLIB
四.Sping AOP and AspectJ AOP 有什么区别?
Spring AOP 基于动态代理方式实现;
AspectJ基于静态代理方式实现。
Spring AOP 仅支持方法级别的PointCut;
提供了完整的AOP支持,它还支持属性级别的PointCut。
五.如何理解Sping 中的代理?
将Advice 应用于目标对象后创建的对象称为代理。在客户端对象的情况下,目标对象和代理对象是相同的。
Advice + Taget Object = Proxy
六.什么是编织(Weaving)?
为了创建一个advice对象而链接一个aspect和其他应用类型或对象,称为编织(Weaving)、
在Spring AOP中,编织在运行是执行。
七.Spring MVC 框架有什么用?
Spring Web MVC 框架提供了模型-视图-控制器架构和随时可用的组件,用于开发灵活且松散耦合的Web应用程序。MVC模型有助于分离应用程序的不同方面,如输入逻辑,业务逻辑和UI逻辑,同时在所有这些元素之间提供松散耦合。
八.描述一下Dispatcherservlet的工作流程
1.向服务器发送HTTP请求,请求被前端控制器DispatcherServlet捕获。
2.DispatcherServlet根据servlet.xml中的配置对请求的URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调用HandlerMapper获得该Hander配置的所有相关的对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExceutionChain对象的形式返回。
3.DispatcherServlet根据获得的Handler,选择一个合适的HandlerAdapter。
4.提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。在填充Handler的入参过程中,根据你的配置,Spring 将帮你做一些额外的工作:
HttpMessageConveter: 将请求消息(如Json、XML等数据)转换成一个对象,将对象转换为指定的响应信息。
数据转换:对请求消息进行数据转换。如String转换成Integer、Double等。
数据根式化:对请求消息进行数据格式化。如将字符串转换成格式化数字或格式化日期等。
数据验证:验证数据的有效性(长度、格式等),验证结果存储到BindingResult或Error中。
5.Handler(Controller)执行未完成后,向DispatcherServlet返回一个ModelAndView对象;
6.根据返回的ModelAndView,选择一个适合的viewResolver(必须是已经注册到Spring 容器中的ViewResolver)返回给DispatcherServlet。
7.ViewResolver结合Model和View,来渲染视图。
8.视图负责将渲染结果返回给客户端。
九.介绍一下WebApplicationContext
WebApplicationContext是ApplicationContext的扩展。
它具有Web应用程序所需要的一些额外功能。它与普通的ApplicationContext在解析主题和决定与哪个Servlet关联的能力方面有所不同。
十.使用Spring框架的好处是什么?
轻量:Spring是轻量的,基本的版本大约2MB。
控制反转:Spring通过控制反转实现了松散耦合,对象们给出它们的依赖,而不是创建或查找依赖的对象们。
面向切面编程(AOP):Spring 支持面向切面编程,并且把应用业务逻辑和系统服务分开。
容器:Spring 包含并管理应用中对象的生命周期和配置。
MVC框架:Spring的WEB框架是个精心设计的框架,是Web框架的一个很好的替代品。
事务管理:Spring提供了持续的事务管理接口,可以扩展到上至本地下至全局事务(JTA)。
异常处理:Spring提供方便的API把具体技术相关的异常(比如由JDBC,Hibernate or JDO跑出的)转化为一致的unchected异常。
猜你喜欢
- 2024-10-15 BATJ面试必会之 Spring 篇(30题) 面试spring的面试题
- 2024-10-15 Spring知识点提炼 spring题
- 2024-10-15 springmvc的核心是啥,请求的流程怎么处理,控制反转怎么实现
- 2024-10-15 spring源码分析——spring大纲 spring源码分析和总结简书
- 2024-10-15 Spring思维导图,让Spring不再难懂(ioc篇)
- 2024-10-15 Spring框架介绍及使用 spring框架的使用步骤
- 2024-10-15 架构师必知必会:Java内置的控制反转机制-Service Provider
- 2024-10-15 轻松理解 Spirng IoC/控制方向反转
- 2024-10-15 什么是控制反转(ioc),通过解释总结告诉你
- 2024-10-15 搞透IOC,Spring IOC看这篇就够了
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- oraclesql优化 (66)
- 类的加载机制 (75)
- feignclient (62)
- 一致性hash算法 (71)
- dockfile (66)
- 锁机制 (57)
- javaresponse (60)
- 查看hive版本 (59)
- phpworkerman (57)
- spark算子 (58)
- vue双向绑定的原理 (68)
- springbootget请求 (58)
- docker网络三种模式 (67)
- spring控制反转 (71)
- data:image/jpeg (69)
- base64 (69)
- java分页 (64)
- kibanadocker (60)
- qabstracttablemodel (62)
- java生成pdf文件 (69)
- deletelater (62)
- com.aspose.words (58)
- android.mk (62)
- qopengl (73)
- epoch_millis (61)
本文暂时没有评论,来添加一个吧(●'◡'●)