当前位置: 首页 > 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 框架中提供的一个注解,用于定义一个组件,该组件可以集中处理来自不同控制器的异常或提供统一的拦截器功能。它主要用于以下几个方面:

  1. 全局异常处理:通过结合 @ExceptionHandler 注解,可以捕获和处理在控制器中抛出的异常。
  2. 全局拦截器:通过实现 HandlerInterceptor 接口,并在类上使用 @ControllerAdvice 注解,可以实现一个全局的拦截器,对控制器的方法调用进行拦截。
  3. 全局数据绑定:通过结合 @InitBinder 注解,可以在控制器方法执行前对数据绑定进行预处理。

基本用法

全局异常处理

假设我们想要捕获并统一处理所有控制器抛出的 ArithmeticException 异常:

@ControllerAdvice
public class GlobalExceptionHandler {@ExceptionHandler(ArithmeticException.class)public ResponseEntity<Object> 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 主要由以下注解组成:

  1. @Target(ElementType.TYPE)
    指定该注解可以应用于类级别。

  2. @Retention(RetentionPolicy.RUNTIME)
    指定该注解在运行时可用。

  3. @Documented
    表示该注解应该被包含在 JavaDoc 中。

  4. @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.15wanjia.com/news/19582.html

相关文章:

  • 保健品网站dede模板网站排名前十
  • 做红包网站小辉seo
  • 西安建筑公司网站建设学生网页设计模板
  • 岳麓区做网站潍坊seo建站
  • 建设网站的目的是什么关键词是怎么排名的
  • 建e网网址是多少seo与网络推广的区别和联系
  • 浙江网站建设公司电话童程童美少儿编程怎样收费
  • 新余市建设厅网站福建网站建设制作
  • 一般做网站是在什么网站找素材新闻今天的最新新闻
  • 专业设计网站的公司目前引流最好的app
  • 嘉兴企业网站排名优化百度免费推广有哪些方式
  • 专业做网站的公司哪家好网络销售推广平台
  • Wordpress多站点共享用户市场调研报告模板范文
  • 注册域名以后怎么做网站北京网络排名优化
  • 网站名称有哪些万网注册域名
  • 制作企业网站需要多少钱yandex搜索引擎
  • 淄博做网站58同城百度网首页官网
  • 做期货浏览哪些网站徐州百度seo排名优化
  • 动漫网页设计作品模板杭州网站seo优化
  • 网站建设公司友情链接营销推广渠道
  • 社会信用体系建设双公示网站宁德市人社局
  • 如何在微信公众号内部做网站淘宝seo排名优化
  • 简述企业网站推广的策略百度浏览器app下载
  • 福州高端网站建设seo优化专员招聘
  • 做代理网站用什么软件网络seo培训
  • 做家宴网站百度seo自然优化
  • 网站资料如何做参考文献宁波网站推广平台效果好
  • 如何做旅游网站推广学好seo
  • 做脚本的网站seo网站内容优化有哪些
  • 购买域名的网站口碑营销怎么做