SpringBoot全局设置请求路径增加前缀

方式1:配置文件

直接通过配置文件设置

#spring boot 默认上下文为/,可以通过server.context-path进行修改
server.context-path=/spring-boot

https://www.cnblogs.com/a-du/p/13293222.html

方式2: 修改WebMvcConfigurer

@Component
public class MyWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void addCorsMappings(CorsRegistry registry) {
        registry.addMapping("/**")  // 匹配所有的路径
                .allowCredentials(true) // 设置允许凭证
                .allowedHeaders("*")   // 设置请求头
                .allowedMethods("GET", "POST", "PUT", "DELETE") // 设置允许的方式
                .allowedOriginPatterns("*");
    }

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer
                .addPathPrefix("/myapi",c -> c.isAnnotationPresent(RestController.class));
    }
}

方式3: 自定义注解ApiRestController

1.增加自定义注解ApiRestController

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@RestController
@RequestMapping(produces = MediaType.APPLICATION_JSON_VALUE)
public @interface ApiRestController {
    @AliasFor(annotation = RequestMapping.class)
    String name() default "";

    @AliasFor(annotation = RequestMapping.class)
    String[] value() default {};

    @AliasFor(annotation = RequestMapping.class)
    String[] path() default {};

}

2. 替换@RestController到注解@ApiRestController

@ApiRestController("students")
public class StudentController {
}

3. 配置WebMvcConfigurer

@Component
public class MyWebMvcConfigurer implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        configurer
                .addPathPrefix("/myapi",c -> c.isAnnotationPresent(ApiRestController.class));
    }
}

  • 4
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以在Spring Boot中实现全局异常处理并捕获所有未处理的异常。常见的做法是创建一个ExceptionHandler类并使用@ControllerAdvice注释。在该类中,可以使用@ExceptionHandler注释来处理特定的异常类型,并在@ExceptionHandler方法中定义异常处理逻辑。如果发生异常没有被@ExceptionHandler处理,可以使用@ResponseStatus定义一个自定义的HTTP响应状态代码,如@ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)。最后,将ExceptionHandler类包含在Spring Boot的主类中即可。 ### 回答2: 在Spring Boot中,可以通过以下方式设置全局异常处理: 1. 创建一个自定义的异常处理类,该类需要使用@ControllerAdvice注解进行标记。这个类可以包含多个异常处理方法,每个方法用来处理不同的异常类型。 ```java @ControllerAdvice public class GlobalExceptionHandler { @ExceptionHandler(Exception.class) public ResponseEntity<String> handleException(Exception ex) { // 处理异常逻辑 return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body("Internal Server Error"); } @ExceptionHandler(YourCustomException.class) public ResponseEntity<String> handleYourCustomException(YourCustomException ex) { // 处理自定义异常逻辑 return ResponseEntity.status(HttpStatus.BAD_REQUEST).body("Bad Request"); } } ``` 2. 在上面的异常处理类中,使用@ExceptionHandler注解标记每个处理方法。注解的参数指定要处理的异常类型。 3. 在处理方法中,可以根据具体的异常类型进行相应的处理逻辑。可以通过返回ResponseEntity对象来指定异常处理后返回的HTTP状态码和响应内容。 4. 在Spring Boot配置文件application.properties(或application.yml)中,可以配置全局异常处理的相关配置,如是否显示异常详细信息、指定异常处理类等。 ```properties # application.properties server.error.include-stacktrace=always server.error.whitelabel.enabled=false ``` 上述配置可以让异常详细信息始终显示,并禁用Spring Boot默认的错误页面(Whitelabel Error Page)。 通过以上步骤,在Spring Boot设置全局异常处理即可。当应用程序发生异常时,将会被自定义的异常处理类捕获并处理,最终返回自定义的异常信息给客户端。 ### 回答3: 在Spring Boot设置全局异常处理可以通过以下几个步骤实现: 1. 创建一个异常处理类,可以命名为GlobalExceptionHandler。该类需要使用@ControllerAdvice注解进行标记,表示它是一个全局异常处理类。 2. 在GlobalExceptionHandler类中,可以定义一些方法来处理不同类型的异常。可以使用@ExceptionHandler注解来指定要处理的异常类型。在方法中编写异常处理的逻辑,比如返回一个自定义的错误信息、跳转到指定的错误页面等。 3. 需要注意的是,如果希望返回一个统一的错误结果,可以在方法的参数中添加一个HttpServletRequest对象或者一个包含HttpServletRequest的对象,比如ResponseEntityExceptionHandler。这样就可以使用该对象获取请求的信息,比如请求的URL、请求的方法等。 4. 最后,在GlobalExceptionHandler类中可以添加一些全局的异常处理方法,比如处理未捕获的其他异常,通过添加@ExceptionHandler(Exception.class)注解实现。 5. 将GlobalExceptionHandler类注册为一个Bean,可以使用@Configuration注解或者@Component注解进行标记,确保Spring Boot能够扫描到该类。 6. 在应用启动类中,通过使用@EnableWebMvc注解或者继承WebMvcConfigurerAdapter类,来启用MVC配置。这样,Spring Boot会自动识别并使用GlobalExceptionHandler类进行全局异常处理。 通过以上步骤,就可以在Spring Boot设置全局异常处理。这样,在应用中发生异常时,就会执行GlobalExceptionHandler类中定义的异常处理逻辑。这样能够更好地管理和处理异常,提高应用的可靠性和稳定性。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值