美文网首页程序员Java 杂谈互联网科技
一个简单的例子,学习自定义注解和AOP

一个简单的例子,学习自定义注解和AOP

作者: Java技术剑 | 来源:发表于2018-10-21 20:32 被阅读47次

    前言

    面试的时候,被问的最多的可能就是你知道Spring的两大核心嘛?那你说说什么是AOP,什么是IOC?我相信你可能也被问了很多次了。

    1、到底是什么是AOP?

    所谓AOP也就是面向切面编程,能够让我们在不影响原有业务功能的前提下,横切扩展新的功能。这里面有一个比较显眼的词我们需要注意一下,横切,它是基于横切面对程序进行扩展的。

    2、AOP相关术语

    在Spring的AOP中有很多的术语,而且容易混淆,大家一定要先搞清楚这几个概念:

    连接点(Joinpoint):在程序执行过程中某个特定的点,比如类初始化前、类初始化后,方法调用前,方法调用后;

    切点(Pointcut):所谓切点就是你所切取的类中的方法,比如你横切的这个类中有两个方法,那么这两个方法都是连接点,对这两个方法的定位就称之为切点;

    增强(Advice):增强是织入到连接点上的一段程序,另外它还拥有连接点的相关信息;

    目标对象(Target):增强逻辑的织入目标类,就是我的增强逻辑植入到什么位置;

    引介(Introduction):一种特殊的增强,它可以为类添加一些属性喝方法;

    织入(Weaving):织入就是讲增强逻辑添加到目标对象的过程;

    代理(Proxy):一个类被AOP织入增强后,就会产生一个结果类,他是融合了原类和增强逻辑的代理类;

    切面(Aspect):切面由切点和增强组成,他是横切逻辑定义和连接点定义的组成;

    3、AOP功能实践

    我们这里主要是学习SpringBoot中的一些功能,所以我们这里用的是SpringBoot工程,版本也是最新的2.0.5版本。

    创建SpringBoot工程就不说了,我们直接引入Maven的依赖:

    首先我们来创建一个Controller类:

    创建切面:

    注解概述:

    @Apsect:将当前类标识为一个切面;

    @Pointcut:定义切点,这里使用的是条件表达式;

    @Before:前置增强,就是在目标方法执行之前执行;

    @AfterReturning:后置增强,方法退出时执行;

    @AfterThrowing:有异常时该方法执行;

    @After:最终增强,无论什么情况都会执行;

    @Afround:环绕增强;

    测试:

    异常测试:

    4、定义自定义注解

    应用场景:在我之前上个项目的时候,有这样一个注解,就是在访问其他接口的时候必须要登录,那么这个时候我们就定义一个注解,让它去对用户是否登录进行校验,那么基于这样的一个场景,我们来定义一个校验登录的注解。

    创建一个注解:

    创建一个AOP切面:

    测试未登录:

    测试登录:

    这样我们就可以简单的实现了一个登录校验的注解。

    通过今天的分享你会使用AOP和自定义注解了吗?

    欢迎工作一到五年的Java工程师朋友们加入Java填坑之路:860113481

    群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

    相关文章

      网友评论

        本文标题:一个简单的例子,学习自定义注解和AOP

        本文链接:https://www.haomeiwen.com/subject/olrizftx.html