增加选项列表Java注释信息_java自定义注解annotation实现菜单权限功能

最近在实现一个菜单权限功能,想到一种自动化即时显示权限列表功能的实现,就是在我们写接口时通过反射的方式获取注解的数据,提取接口层的数据展示出来。

具体实现方式举例看下

@RequestMapping( path = "get", name = "查询", method = RequestMethod.GET)

public UserInfo get(@RequestParam Integer id) {

return userService.getById(id);

}

@RequestMapping( path = "create", name = "创建", method = RequestMethod.POST)

public UserInfo create(@Valid @RequestBody CreateUserRequest dto) throws CustomException{

return authService.register(dto);

}

在写接口实现时,良好的接口注释会写上接口的路径、请求方式和接口功能,通过反射出RequestMapping注解可以获取到这些数据,当我们需要控制权限时可以将角色和这些接口权限绑定一起来实现。如果我们需要获取所有的菜单功能,也可以通过类上注解的方式,每个控制器类就是一个菜单下功能。

比如:

@ClassMenu(uri = "/api/v1/users", mod = "系统管理", sub = "用户管理")

通过类上注解说明父菜单和子菜单的名称,然后获取类上注解内容可以及时得知新菜单和接口权限的数据。

类上注解实现方式:

@Target({ElementType.TYPE})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface ClassMenu {

String uri();

String mod();

String sub();

}

方法注解实现方式:

@Target({ElementType.METHOD})

@Retention(RetentionPolicy.RUNTIME)

@Documented

public @interface FuncMenu {

String value() default "";

}

自定义注解的定义方式很像接口,但与接口不同的是前面加了@代表注解

当然菜单权限功能的实现方式开始最能想到的实现方式就是保存在数据库里,后面新的菜单权限在前台录入然后及时更新数据库保证数据一致。不同的实现方式可以用在不同的业务场景下,可以择优选取。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值