Spring AspectJ
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相关推荐
- maven aspectj_使用Spring AspectJ和Maven进行面向方面的编程
maven aspectj Spring框架附带AOP支持. 实际上,如Spring参考文档中所述 , " Spring的关键组件之一是AOP框架. 尽管Spring IoC容器不依赖于AO ...
- 使用Spring AspectJ和Maven进行面向方面的编程
Spring框架附带AOP支持. 实际上,如Spring参考文档中所述 , " Spring的关键组件之一是AOP框架. 尽管Spring IoC容器不依赖于AOP,这意味着您不需要使用AO ...
- spring AspectJ的Execution表达式
Aspectj切入点语法定义 在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义切入点表达式 execut ...
- Java Spring AspectJ
AspectJ是AOP的框架,Spring建议使用 切入点表达式(execution()) execution(修饰符 返回值 包.类.方法名(参数) throws异常) 修饰符(一般省略) publ ...
- Spring @AspectJ 实现AOP 入门例子(转)
AOP的作用这里就不再作说明了,下面开始讲解一个很简单的入门级例子. 引用一个猴子偷桃,守护者守护果园抓住猴子的小情节. 1.猴子偷桃类(普通类): Java代码 package com.samt ...
- Java学习之「Spring + AspectJ 」
目录 ■前言 ■省略部分 ■代码构造 ■运行效果 ■具体代码 AspectTest MyAspect ★★★ @Aspect AppConf ★★★ @EnableAspectJAutoPro ...
- spring AspectJ的Execution详解
在使用spring框架配置AOP的时候,不管是通过XML配置文件还是注解的方式都需要定义pointcut"切入点" 例如定义切入点表达式 execution (* com.sam ...
- Spring AspectJ Execution 表达式
1. 定义切点表达式 execution(* com.xinsui.service.impl..*.*(..)) execution(* *..impl..*.*(..)) 切点表达式分为五个部分 1 ...
- Spring AspectJ简单测试代码
1.定义一个被通知的对象(目标对象)POJO public class TestBean { public void add() { System.out.println("add to d ...
最新文章
- 重磅!!kaggle训练, 终于不用怕断网了
- Angular自学笔记(?)结构型指令
- Docker:Nginx-Redis-Mysql-PHP 部署
- (王道408考研数据结构)第四章串-第二节:串的模式匹配算法(朴素和KMP)
- HTML的DOM和浏览器的BOM
- linux boot命令用法,Linux基础命令介绍 - 2
- 超24亿美元的BTC、ETH、XRP等加密货币在衍生品交易所被清算
- HFSS - 圆极化矩形微带天线设计与仿真
- 自动驾驶中车辆的如何使用点云定位?
- 模拟汽车速度控制系统的设计 微机原理课程设计
- matlab投资组合权重,马科维茨投资组合理论(均方模型)学习笔记――基于Matlab(四)...
- linux pl2303 驱动下载,ubuntu装pl2303USB转串口驱动(详细,亲测)
- android使用fir.im实现版本更新
- 从 BeReal 爆火背后,探秘图片社交新范式
- 蓝牙技术|CES 2022 蓝牙防丢新品频出,智能防丢将燃爆市场
- java判断经纬度是否在扇形内_地图学复习 (题) (带答案)
- (十二)命令模式详解(故事版)
- js使用基础总结(简单封装,事件,foreach 原生js写法)
- 74LS244 三态门 功能介绍
- Python爬虫 - 人人贷散标
热门文章
- Java练习题 类 编写一个程序,使用复数类Complex验证两个复数 1+2i 和3+4i 相加产生一个新的复数 4+6i 。
- WIN XP SP2系统经常性死机问题解决历程
- PHP面试题2019年腾讯工程师面试题和答案
- win7 android双系统,Win7+Android双系统 Acer AOD255评测
- python print 字体大小_Python print 玩转“点阵字”
- 我的编程之路:从好玩到玩好
- 第一款带无代码应用搭建平台的固定资产管理系统
- Y z推荐菜东家 易订货生鲜系统_易订货推出生鲜专版,为生鲜农贸客户提供解决方案...
- deepin启动黑屏
- 上拉电阻、下拉电阻的理解