springboot+自定义注解+AOP实现权限控制(一)

文末有下载链接!!!   

通过自定义注解+AOP可以学习到:

1. 权限控制框架的底层的一些实现,以及权限控制的流程

2. 拦截器和AOP的区别

3. 通过自定义注解来学习spring注解的实现

一. 权限控制

       在之前项目里的权限控制,一般会选择这几种方案:

1. shiro

2. spring security

3. JWT

4. 自定义拦截器

       简单来说使用后的感觉,shiro是基于过滤器,spring security是基于spring框架及拦截器,JWT使用token比较方便及前后端调试,自定义拦截器对权限控制的流程熟悉要求比较高,需要考虑的if else比较多。下面通过AOP的方式来学习spring security底层的一些实现。

二. 拦截器和AOP的区别

1. 拦截器

    Spring中拦截器有三个方法:preHandle,postHandle,afterCompletion,如public boolean preHandle(HttpServletRequest httpServletRequest, HttpServletResponse httpServletResponse, Object o)表示被拦截的URL对应的方法执行前的自定义处理,可以看出它是基于url级别

    拦截器可以在方法执行之前(preHandle)和方法执行之后(afterCompletion)进行操作,回调操作(postHandle)可以获取执行的方法的名称请求(HttpServletRequest),及参数名称,但无法获取参数的值。

2. AOP

    只能拦截Spring管理Bean的访问。这是关键的一点。AOP操作可以对操作进行横向的拦截,最大的优势在于它可以获取执行方法的参数( ProceedingJoinPoint.getArgs() ),对方法进行统一的处理。

    可以参考《Spring AOP 之 通知、连接点、切点、切面》    

三. 自定义注解

    首先查看一个spring自带的注解,比如@RequestMapping,如图

可以看出,注解可以分为三部分

1. 元注解

2. @interface标识为注解

3. 注解的属性值

1. 元注解

    jdk自带的注解,用来注解其他注解。

1. @Target:

       被描述的注解可以用在什么地方,如标识本注解可以使用在类上/方法上。取值(ElementType)有:

    1.CONSTRUCTOR:用于描述构造
    2.FIELD:用于描述域
    3.LOCAL_VARIABLE:用于描述局部变量
    4.METHOD:用于描述方法
    5.PACKAGE:用于描述包
    6.PARAMETER:用于描述参数
    7.TYPE:用于描述类、接口(包括注解类型) 或enum声明

2. @Retention

       被描述的注解在什么范围内有效,如标识本注解在运行期间有效。取值(RetentionPoicy)有:

    1.SOURCE:在源文件中有效(即源文件保留)
    2.CLASS:在class文件中有效(即class保留)
    3.RUNTIME:在运行时有效(即运行时保留)

3. @Documented

       标记注解,表示注解可以被API文档化

4. @Inherited

       标记注解,如果@Inherited修饰的注解用于一个class,则这个注解可被用于该class的子类。

2. @interface

@interface用来声明一个注解。格式:public @interface 注解名 {定义体}

3. 注解的属性值

定义体里,方法的名称就是参数的名称,返回值类型就是参数的类型(返回值类型只能是基本类型、Class、String、enum)。可以通过default来声明参数的默认值。如 :

String value() default "";  

String[ ] value() default {};

在下文《springboot+自定义注解+AOP实现权限控制(二)》中,一起学习和使用自定义注解和AOP的流程!

 

github链接:https://github.com/laoyog/customize-permission

CSDN链接:https://download.csdn.net/download/byteArr/12104797

 
  • 6
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值