Hello,这里来简单的说一下AspectJ的使用


概述:
AspectJ是一个基于Java语言的AOP框架,在Spring2.0以后添加了对AspectJ切入点表达式的支持

@AspectJ允许在Bean类定义切面

Spring配置文件

<?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 http://www.springframework.org/schema/beans/spring-beans.xsdhttp://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop.xsd"></bean>

先简单说一下AspectJ的通知类型

@Before前置通知,相当于BeforeAdvice
@AfterReturnin后置通知,相当于AfterReturningAdvice
@Around环绕通知,相当于MethodInterceptor
@AfterThrowing异常抛出通知,相当于ThrowAdvice
@After最终通知,不管程序是否有异常,都会执行次通知

定义切点:通过execution函数,定义切点

通过两个小案例分别演示一下AspectJ的使用,希望可以对刚入门Spring的小伙伴们有所帮助

第一个:通过注解的方式

创建一个Maven项目

创建包(com.spring.demo),类(SpringDemo,AspectDemo,StudentDemo)


Resource文件夹下面创建ApplicationContext.xml

AspectDemo这个类可以修改成以@Pointcut为切点命名:

使用@Pointcut切点命名的工作量小,容易维护,对于重复的切点是比较有省时省力

第一个:通过XML的方式

创建四个类

类中敲入代码


新建一个ApplicationContext2.xml配置文件

补充pox.xml的配置

<!-- https://mvnrepository.com/artifact/org.springframework/spring-context -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-context</artifactId><version>4.2.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-core -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>4.2.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-beans -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-beans</artifactId><version>4.2.4.RELEASE</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.springframework/spring-expression -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-expression</artifactId><version>4.3.2.RELEASE</version>
</dependency><!--  https://mvnrepository.com/artifact/aopalliance/aopalliance-->
<dependency><groupId>aopalliance</groupId><artifactId>aopalliance</artifactId><version>1.0</version>
</dependency><!-- https://mvnrepository.com/artifact/org.springframework/spring-aop -->
<dependency><groupId>org.springframework</groupId><artifactId>spring-aop</artifactId><version>4.2.4.RELEASE</version>
</dependency>
<dependency><groupId>org.aspectj</groupId><artifactId>aspectjweaver</artifactId><version>1.8.9</version>
</dependency>
<dependency><groupId>org.springframework</groupId><artifactId>spring-aspects</artifactId><version>4.2.4.RELEASE</version>
</dependency><dependency><groupId>org.springframework</groupId><artifactId>spring-test</artifactId><version>4.2.4.RELEASE</version>
</dependency>
<!--  https://mvnrepository.com/artifact/javax.annotation/javax.annotation-api-->
<dependency><groupId>javax.annotation</groupId><artifactId>javax.annotation-api</artifactId><version>1.2</version>
</dependency>

以上便是AspectJ的两种使用方式,讲的不都清楚的,或者将错的,欢迎在评论区评论

Spring AspectJ相关推荐

  1. maven aspectj_使用Spring AspectJ和Maven进行面向方面的编程

    maven aspectj Spring框架附带AOP支持. 实际上,如Spring参考文档中所述 , " Spring的关键组件之一是AOP框架. 尽管Spring IoC容器不依赖于AO ...

  2. 使用Spring AspectJ和Maven进行面向方面的编程

    Spring框架附带AOP支持. 实际上,如Spring参考文档中所述 , " Spring的关键组件之一是AOP框架. 尽管Spring IoC容器不依赖于AOP,这意味着您不需要使用AO ...

  3. spring AspectJ的Execution表达式

    Aspectj切入点语法定义 在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义切入点表达式 execut ...

  4. Java Spring AspectJ

    AspectJ是AOP的框架,Spring建议使用 切入点表达式(execution()) execution(修饰符 返回值 包.类.方法名(参数) throws异常) 修饰符(一般省略) publ ...

  5. Spring @AspectJ 实现AOP 入门例子(转)

    AOP的作用这里就不再作说明了,下面开始讲解一个很简单的入门级例子. 引用一个猴子偷桃,守护者守护果园抓住猴子的小情节. 1.猴子偷桃类(普通类): Java代码   package com.samt ...

  6. Java学习之「Spring + AspectJ 」

    目录 ■前言 ■省略部分 ■代码构造 ■运行效果 ■具体代码 AspectTest MyAspect   ★★★ @Aspect AppConf   ★★★ @EnableAspectJAutoPro ...

  7. spring AspectJ的Execution详解

    在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义切入点表达式  execution (* com.sam ...

  8. Spring AspectJ Execution 表达式

    1. 定义切点表达式 execution(* com.xinsui.service.impl..*.*(..)) execution(* *..impl..*.*(..)) 切点表达式分为五个部分 1 ...

  9. Spring AspectJ简单测试代码

    1.定义一个被通知的对象(目标对象)POJO public class TestBean { public void add() { System.out.println("add to d ...

最新文章

  1. 重磅!!kaggle训练, 终于不用怕断网了
  2. Angular自学笔记(?)结构型指令
  3. Docker:Nginx-Redis-Mysql-PHP 部署
  4. (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)
  5. HTML的DOM和浏览器的BOM
  6. linux boot命令用法,Linux基础命令介绍 - 2
  7. 超24亿美元的BTC、ETH、XRP等加密货币在衍生品交易所被清算
  8. HFSS - 圆极化矩形微带天线设计与仿真
  9. 自动驾驶中车辆的如何使用点云定位?
  10. 模拟汽车速度控制系统的设计 微机原理课程设计
  11. matlab投资组合权重,马科维茨投资组合理论(均方模型)学习笔记――基于Matlab(四)...
  12. linux pl2303 驱动下载,ubuntu装pl2303USB转串口驱动(详细,亲测)
  13. android使用fir.im实现版本更新
  14. 从 BeReal 爆火背后,探秘图片社交新范式
  15. 蓝牙技术|CES 2022 蓝牙防丢新品频出,智能防丢将燃爆市场
  16. java判断经纬度是否在扇形内_地图学复习 (题) (带答案)
  17. (十二)命令模式详解(故事版)
  18. js使用基础总结(简单封装,事件,foreach 原生js写法)
  19. 74LS244 三态门 功能介绍
  20. Python爬虫 - 人人贷散标

热门文章

  1. Java练习题 类 编写一个程序,使用复数类Complex验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。
  2. WIN XP SP2系统经常性死机问题解决历程
  3. PHP面试题2019年腾讯工程师面试题和答案
  4. win7 android双系统,Win7+Android双系统 Acer AOD255评测
  5. python print 字体大小_Python print 玩转“点阵字”
  6. 我的编程之路:从好玩到玩好
  7. 第一款带无代码应用搭建平台的固定资产管理系统
  8. Y z推荐菜东家 易订货生鲜系统_易订货推出生鲜专版,为生鲜农贸客户提供解决方案...
  9. deepin启动黑屏
  10. 上拉电阻、下拉电阻的理解