前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >SpingBoot使用自定义注解实现给Controller添加指定路径前缀

SpingBoot使用自定义注解实现给Controller添加指定路径前缀

作者头像
MoLeft
发布2022-08-30 11:03:20
5600
发布2022-08-30 11:03:20
举报
文章被收录于专栏:用砖头敲代码

需求

最近在写毕业设计,需要使用SpringBoot+MyBatis来完成,在写的时候,本来是使用下面的代码来实现访问/api/user/get这种形式的路由,但是发现每一次都要去重复写@RestController@RequestMapping,一点也不优美,于是便想到了使用自定义注解来完成此功能。

代码语言:javascript
复制
@RestController
@RequestMapping("/api/user")
public class UserController {
    
    @GetMapping("/test")
    public Map<Object, Object> test() {
        return Result.success("测试成功");
    }
    
}

自定义注解类

像下图这样实现注解类,就自动集成了@RestController@RequestMapping两个注解

代码语言:javascript
复制
@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 {};

}

配置类

代码语言:javascript
复制
@Configuration
public class ApiPrefixAutoConfiguration implements WebMvcConfigurer {

    @Override
    public void configurePathMatch(PathMatchConfigurer configurer) {
        // 使用自定义注解@ApiRestController时添加前缀/api
        configurer.addPathPrefix("/api", c -> c.isAnnotationPresent(ApiRestController.class));
    }

}

完成

这样的话,我们就可以使用@ApiRestController来替换掉@RestController@RequestMapping注释,而且还可以自动添加路由前缀,简直优美的不得了,使用效果就像下面这样:

http://127.0.0.1/api/user/test

代码语言:javascript
复制
@ApiRestController('/user')
public class UserController {
    
    @GetMapping("/test")
    public Map<Object, Object> test() {
        return Result.success("测试成功");
    }
    
}

如无特殊说明《SpingBoot使用自定义注解实现给Controller添加指定路径前缀》为博主MoLeft原创,转载请注明原文链接为:https://moleft.cn/post-236.html

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 需求
  • 自定义注解类
  • 配置类
  • 完成
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档