JavaEE简单示例——基于注解的AOP实现

简单介绍:

之前我们介绍了关于XML的面向切面的编程,通过配置文件的方法,在不修改源代码的情况下完成了对已有方法的增强 除了基于XML配置文件的方式,我们还可以使用更简单的,基于注解的方式。

每一次,我们在使用面向切面的注解的时候,我们都要明确三个问题,插什么?插谁?插在哪? 这三个问题也就对应了我们面向切面中的切面,增强,切入点,关系。带着这样的问题去学习基于注解的AOP的实现会理解的比较快一点

使用方法:

首先,我们来介绍一下我们需要用到的注解:

@Aspect:配置切面
@Pointcut:配置切入点
@Before:配置前置通知
@After:配置后置通知
@Around:配置环绕通知
@AfterReturning:配置返回通知
@AfterThrowing:配置异常通知

这些注解都是写在切面中的,也就是说我们只需要一个切面类,一个目标类,然后在配置文件中添加 切面类的<bean>标签和目标类的<bean>标签,最后配置一下自动代理就可以了。

代码实现:

打开我们之前的基于XML配置方式的AOP的实现,我们对切面和XML配置文件进行改造一下,其他的类都不需要改变。

首先我们来到XML配置文件,我们把配置AOP的标签全部都删除,添加一个自动代理的标签:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xmlns:aop="http://www.springframework.org/schema/aop"
       xsi:schemaLocation="http://www.springframework.org/schema/beans
        https://www.springframework.org/schema/beans/spring-beans.xsd
        http://www.springframework.org/schema/aop
        http://www.springframework.org/schema/aop/spring-aop.xsd">
    <!--    开启自动代理-->
    <aop:aspectj-autoproxy/>
    <bean id="actionUser" class="Semester_4.AOP.Annotation_based_AOP.ActionUser"/>
    <bean id="userEnhancement" class="Semester_4.AOP.Annotation_based_AOP.UserEnhancement"/>

</beans>

然后来到我们的切面类中,在适当的地方添加我们的注解:

package Semester_4.AOP.Annotation_based_AOP;

import org.aspectj.lang.annotation.After;
import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

@Aspect() //配置切面,其实就是声明这是一个切面
public class UserEnhancement {
//    配置切入点,关于切入点的配置需要说明一下
//    切入点需要配置在一个空方法上面,而之后在配置增强与切入点的关系的时候,我们需要将切入点的注解下面的方法的方法名当作参数填入到增强与切入点之间关系的注解的括号里面当作参数
    @Pointcut("execution(* Semester_4.AOP.Annotation_based_AOP.ActionUser.*(..))")
    public void point(){}
//    配置增强方法与被增强方法的关系
    @Before("point()")
    public void chink(){
        System.out.println("基于注解的模拟检查权限的过程……");
    }
    @After("point()")
    public void log(){
        System.out.println("基于注解的模拟写入日志的过程……");
    }
}

我们的测试类也是一样的,我们运行之前的测试类进行测试 

运行结果:

可以看到,我们依然正常完成了对已有方法的增强,并且使用注解的方式会更加的方便 

注意点:

在注解的使用中,首先就是对各个注解的作用一定要了解,对于不同的注解的使用方法一定要知道,其次就是我们要去在XML配置文件中需要添加一个自动代理的标签,才能让我们的自动代理的AOP发挥作用

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值