tft每日頭條

 > 生活

 > springboot controller 多種參數

springboot controller 多種參數

生活 更新时间:2024-07-08 21:02:38

springboot controller 多種參數? 對于@ControllerAdvice,我們比較熟知的用法是結合@ExceptionHandler用于全局異常的處理,但其作用不僅限于此ControllerAdvice拆分開來就是Controller Advice,關于Advice,前面我們講解Spring Aop時講到,其是用于封裝一個切面所有屬性的,包括切入點和需要織入的切面邏輯這裡ContrllerAdvice也可以這麼理解,其抽象級别應該是用于對Controller進行“切面”環繞的,而具體的業務織入方式則是通過結合其他的注解來實現的@ControllerAdvice是在類上聲明的注解,其用法主要有三點:,今天小編就來聊一聊關于springboot controller 多種參數?接下來我們就一起去研究一下吧!

springboot controller 多種參數(SpringMVC之ControllerAdvice詳解)1

springboot controller 多種參數

對于@ControllerAdvice,我們比較熟知的用法是結合@ExceptionHandler用于全局異常的處理,但其作用不僅限于此。ControllerAdvice拆分開來就是Controller Advice,關于Advice,前面我們講解Spring Aop時講到,其是用于封裝一個切面所有屬性的,包括切入點和需要織入的切面邏輯。這裡ContrllerAdvice也可以這麼理解,其抽象級别應該是用于對Controller進行“切面”環繞的,而具體的業務織入方式則是通過結合其他的注解來實現的。@ControllerAdvice是在類上聲明的注解,其用法主要有三點:

  • 結合方法型注解@ExceptionHandler,用于捕獲Controller中抛出的指定類型的異常,從而達到不同類型的異常區别處理的目的;
  • 結合方法型注解@InitBinder,用于request中自定義參數解析方式進行注冊,從而達到自定義指定格式參數的目的;
  • 結合方法型注解@ModelAttribute,表示其标注的方法将會在目标Controller方法執行之前執行。

從上面的講解可以看出,@ControllerAdvice的用法基本是将其聲明在某個bean上,然後在該bean的方法上使用其他的注解來指定不同的織入邏輯。不過這裡@ControllerAdvice并不是使用AOP的方式來織入業務邏輯的,而是Spring内置對其各個邏輯的織入方式進行了内置支持。本文将對@ControllerAdvice的這三種使用方式分别進行講解。

1. @ExceptionHandler

@ExceptionHandler的作用主要在于聲明一個或多個類型的異常,當符合條件的Controller抛出這些異常之後将會對這些異常進行捕獲,然後按照其标注的方法的邏輯進行處理,從而改變返回的視圖信息。如下是@ExceptionHandler的屬性結構:

@Target(ElementType.METHOD) @Retention(RetentionPolicy.RUNTIME) @Documented public @interface ExceptionHandler { // 指定需要捕獲的異常的Class類型 Class<? extends Throwable>[] value() default {}; }

如下是我們使用@ExceptionHandler捕獲RuntimeException異常的例子:

@ControllerAdvice(basePackages = "mvc") public class SpringControllerAdvice { @ExceptionHandler(RuntimeException.class) public ModelAndView runtimeException(RuntimeException e) { e.printStackTrace(); return new ModelAndView("error"); } }

這裡我們模拟一個訪問user detail的接口,在該接口中抛出了RuntimeException,那麼理論上,這裡的異常捕獲器就會捕獲該異常,然後返回默認的error試圖。如下是UserController的代碼:

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved