当前位置: 首页 > article >正文

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发挥作用


http://www.kler.cn/a/1743.html

相关文章:

  • ubuntu快速入门
  • 数据分析的革命——解读云数据库 SelectDB 版的力量
  • PTA DS 6-1 二分查找
  • idea 8年使用整理
  • Metagenome宏基因组,未识别的物种unclassified
  • 大数据-261 实时数仓 - 业务数据库表结构 交易订单、订单产品、产品分类、商家店铺、地域组织表
  • 【IT女神勋章挑战赛名单公布】:看看谁获奖啦!
  • 树莓派Pico W无线开发板UDP协议MicroPython网络编程实践
  • python如何快速采集美~女视频?无反爬
  • java源码阅读---ReentrantLock源码解析
  • Monkey Test简单介绍
  • 树莓派(3B):启动流程,系统初始化配置,引脚图图示说明
  • 【云原生|Docker】04-docker的资源限制
  • 【小猫爪】AUTOSAR学习笔记06-Communication Stack之ComM模块
  • 2023年“网络安全”赛项江苏省淮安市赛题解析(超详细)
  • AI独立开发者:一周涨粉8万赚2W美元;推特#HustleGPT GPT-4创业挑战;即刻#AIHackathon创业者在行动 | ShowMeAI周刊
  • 使用Hexo+Github搭建部署个人博客
  • PyTorch 之 神经网络 Mnist 分类任务
  • 学习 Python 之 Pygame 开发魂斗罗(八)
  • 动态规划算法
  • 断言assert
  • 【多线程】多线程案例
  • GitHub 上有些什么好玩的项目?
  • 不是,到底有多少种图片懒加载方式?
  • 【正点原子FPGA连载】 第三十三章基于lwip的tftp server实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南
  • 修剪灌木[蓝桥杯2022初赛]