当前位置: 首页 > news >正文

最专业的网站建设百度帐号登录

最专业的网站建设,百度帐号登录,做电影网站需要什么软件,给媳妇做的网站目录 简介基本用法全局异常处理全局拦截器全局数据绑定 注解参数1.value(): String[]2.basePackages(): String[]3.basePackageClasses(): Class?[]4.assignableTypes(): Class?[]5.annotations(): Class? extends Annotation[] 三.注解组成总结 简… 目录 简介基本用法全局异常处理全局拦截器全局数据绑定 注解参数1.value(): String[]2.basePackages(): String[]3.basePackageClasses(): Class?[]4.assignableTypes(): Class?[]5.annotations(): Class? extends Annotation[] 三.注解组成总结 简介 ControllerAdvice 是 Spring 框架中提供的一个注解用于定义一个组件该组件可以集中处理来自不同控制器的异常或提供统一的拦截器功能。它主要用于以下几个方面 全局异常处理通过结合 ExceptionHandler 注解可以捕获和处理在控制器中抛出的异常。全局拦截器通过实现 HandlerInterceptor 接口并在类上使用 ControllerAdvice 注解可以实现一个全局的拦截器对控制器的方法调用进行拦截。全局数据绑定通过结合 InitBinder 注解可以在控制器方法执行前对数据绑定进行预处理。 基本用法 全局异常处理 假设我们想要捕获并统一处理所有控制器抛出的 ArithmeticException 异常 ControllerAdvice public class GlobalExceptionHandler {ExceptionHandler(ArithmeticException.class)public ResponseEntityObject handleArithmeticException(ArithmeticException ex) {// 定义错误信息ApiError apiError new ApiError(An arithmetic error occurred, ex.getMessage());// 返回错误响应return new ResponseEntity(apiError, HttpStatus.BAD_REQUEST);} }在这个例子中任何控制器抛出的 ArithmeticException 都会被 GlobalExceptionHandler 类中的 handleArithmeticException 方法捕获并返回一个包含错误信息的响应。 全局拦截器 创建一个全局拦截器来记录每个请求的处理时间 ControllerAdvice public class LoggingInterceptor implements HandlerInterceptor {Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {System.out.println(PreHandle: request.getRequestURI());return true;}Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {System.out.println(PostHandle: request.getRequestURI());}Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {long timeTaken System.currentTimeMillis() - request.getAttribute(startTime) null ? 0 : (Long) request.getAttribute(startTime);System.out.println(AfterCompletion: request.getRequestURI() , Time Taken: timeTaken ms);} }在 preHandle 方法中你可以在控制器方法执行前进行一些操作例如记录开始时间。postHandle 方法在控制器方法执行后执行而 afterCompletion 方法在视图渲染后执行适合用于记录请求处理的总时间。 全局数据绑定 自定义数据绑定 ControllerAdvice public class MyDataBinder {InitBinderpublic void initBinder(WebDataBinder binder) {// 可以在这里自定义属性编辑器binder.registerCustomEditor(MyObject.class, new MyObjectEditor());} }在这个例子中我们通过 InitBinder 注解定义了一个方法该方法将在每个控制器方法调用之前执行用于注册自定义的数据绑定行为。 注解参数 1.value(): String[] 用于指定要应用通知的包名。 例如ControllerAdvice(“org.example.controllers”) 2.basePackages(): String[] 与 value() 相同用于指定要应用通知的包名。 例如ControllerAdvice(basePackages “org.example.controllers”) 3.basePackageClasses(): Class?[] 用于指定要应用通知的基础包类。 例如ControllerAdvice(basePackageClasses MyController.class) 4.assignableTypes(): Class?[] 用于指定要应用通知的特定类型。 例如ControllerAdvice(assignableTypes {ControllerInterface.class, AbstractController.class}) 5.annotations(): Class? extends Annotation[] 用于指定要应用通知的注解类型。 例如ControllerAdvice(annotations RestController.class) 三.注解组成 ControllerAdvice 实际上是一个组合注解meta-annotation它由几个其他的 Spring 注解组成。 ControllerAdvice 的注解定义大致如下 Target(ElementType.TYPE) Retention(RetentionPolicy.RUNTIME) Documented Component public interface ControllerAdvice {// ... 参数定义 }从这个定义中我们可以看到 ControllerAdvice 主要由以下注解组成 Target(ElementType.TYPE) 指定该注解可以应用于类级别。 Retention(RetentionPolicy.RUNTIME) 指定该注解在运行时可用。 Documented 表示该注解应该被包含在 JavaDoc 中。 Component 这是最关键的组成部分。Component 使得被 ControllerAdvice 注解的类成为 Spring 容器管理的一个组件。 Component 的存在意味着 ControllerAdvice 注解的类会被自动检测并注册为 Spring Bean。它允许该类被 Spring 的组件扫描机制识别和管理。 虽然 ControllerAdvice 本身并不直接包含如 ExceptionHandler、InitBinder 或 ModelAttribute 这样的功能性注解但它为这些注解提供了一个全局的应用上下文。当与这些注解结合使用时ControllerAdvice 使得它们的作用范围扩展到了多个控制器。 重要的是要注意ControllerAdvice 本身并不提供任何具体的功能。它主要作为一个标记告诉 Spring 框架这个类应该被特殊处理允许其中的方法通过其他注解如 ExceptionHandler 等标记应用于多个控制器。 总结 ControllerAdvice 主要是通过 Component 注解实现其核心功能而其他的元注解Target, Retention, Documented则提供了额外的元数据信息。这种组合使得 ControllerAdvice 成为一个强大而灵活的工具用于在 Spring MVC 应用中实现全局的控制器相关功能。
http://www.dnsts.com.cn/news/240397.html

相关文章:

  • 视频网站管理系统网站如何做图片特效
  • 微信个人商城网站模板免费下载企业网站源码挣钱吗
  • 比较流行的网站建设技术有哪些传诚信网站建设
  • 网站租用wordpress程序如何降低版本
  • 丽水网站建设微信推广wordpress字体路径设置
  • 网站建设788gg网站做seo屏蔽搜索引擎
  • jsp做网站用到什么技术做外贸免费的网站有哪些
  • 网站宣传页wordpress转入插件
  • 建站知乎进销存管理软件哪个好
  • 企业建设网站选择网页制作的软件是
  • emlog建站教程东莞厚街镇属于哪个区
  • 怎么推广自己的网站链接写作网站官方
  • 上海做电子商务网站的公司销售管理软件app
  • 怀化政法网站wordpress腾讯云cos插件
  • 个人网站 空间南昌建设人才网站
  • 北京高端网站建设制作设计建设工程人员锁定网站
  • 建设网站的制作步骤wordpress 两栏
  • 网站开发 大学专业龙华建设网站
  • 凡科自助建站平台商务网页是怎样设计的呢
  • 保山做网站电子商务网站开发需要注意问题
  • 专业做鞋子的网站厦门同安网站制作企业
  • 网站站点建设中端口号的作用郑州同济医院正规吗
  • html5 门户网站模版西安旅游网站建设
  • tuzicms做企业手机网站如何全国工程信息查询平台
  • 云南建设厅网站执业注册域名网站
  • wordpress搭建实时聊天网站俄罗斯ip地址
  • 佛山网站建设哪家便宜内蒙古建设工程造价信息网解释
  • wap网站是什么意思asp网站数据库位置
  • 西安免费网站制作电商巨头
  • 店铺外卖网站怎么做asp网站后台模板