基于AspectJ的XML方式进行AOP开发

-------------------siwuxie095

基于 AspectJ 的 XML 方式进行 AOP 开发

1、首先导入
jar 包(共 10 个包)

(1)导入核心 jar 包和日志相关的 jar 包

(2)导入 AOP 和
AspectJ 的 jar 包

其中:

aopalliance
下载链接:

http://mvnrepository.com/artifact/aopalliance/aopalliance

aspectjweaver
下载链接:

http://mvnrepository.com/artifact/org.aspectj/aspectjweaver

2、创建
Spring 核心配置文件,引入新的 XML 约束

spring-aop-4.3.xsd

注意:要引入和
Spring 版本对应的 XML 约束


applicationContext.xml 中添加如下约束:


<?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.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">

3、使用表达式配置切入点:切入点表达式

(1)切入点,即
实际被增强的方法

(2)常用表达式:

execution(<访问修饰符>? <返回值类型> <类型声明>? <方法名>(<参数>) <异常>?)

1)必选:返回值类型、方法名、参数

2)可选:访问修饰符、类型声明、异常

(3)通配符:

1)*:匹配任意数量的字符

2)..:匹配任意数量的包

参数

(4)举例如下:

1)execution(* com.siwuxie095.aop.Book.add(..))

匹配特定包和类下的 add 方法

2)execution(* com.siwuxie095.aop.Book.*(..))

匹配特定包和类下的所有方法

3)execution(* *.*(..))

匹配所有方法

4)execution(* add*(..))

匹配所有 add 开头的方法

参考链接:http://www.cnblogs.com/softidea/p/6102770.html

4、具体实现

(1)编写一个被增强类

Book.java:


package com.siwuxie095.aop;

//被增强类

public class Book {

public
void add() {

System.out.println("----- add -----");

}

}

(2)编写一个增强类

MyBook.java:


package com.siwuxie095.aop;

import org.aspectj.lang.ProceedingJoinPoint;

// 增强类

public class MyBook {

public
void beforeAdd() {

System.out.println("----- 前置增强 -----");

}

public
void afterAdd(){

System.out.println("----- 后置增强 -----");

}

public
void aroundAdd(ProceedingJoinPoint proceedingJoinPoint) throws Throwable {

System.out.println("----- 环绕增强(方法之前) -----");

//执行被增强的方法

proceedingJoinPoint.proceed();

System.out.println("----- 环绕增强(方法之前) -----");

}

}

(3)在配置文件中进行配置

applicationContext.xml:


<?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.xsd

http://www.springframework.org/schema/aop

http://www.springframework.org/schema/aop/spring-aop.xsd">

<!-- 配置对象 -->

<bean
id="book"
class="com.siwuxie095.aop.Book"></bean>

<bean
id="myBook"
class="com.siwuxie095.aop.MyBook"></bean>

<!-- 配置 AOP -->

<aop:config>

<!-- 配置切入点:哪些类的哪些方法需要增强 -->

<aop:pointcut
expression="execution(* com.siwuxie095.aop.Book.add(..))"
id="pt"/>

<!-- 配置切面:把增强应用到切入点上 -->

<aop:aspect
ref="myBook">

<aop:before
method="beforeAdd"
pointcut-ref="pt"/>

<aop:after-returning
method="afterAdd"
pointcut-ref="pt"/>

<aop:around
method="aroundAdd"
pointcut-ref="pt"/>

</aop:aspect>

</aop:config>

</beans>

(4)编写一个测试类

TestAop.java:


package com.siwuxie095.aop;

import org.junit.Test;

import org.springframework.context.ApplicationContext;

import org.springframework.context.support.ClassPathXmlApplicationContext;

public class TestAop {

/**

* 手动加上 @Test 以进行单元测试(将自动导入 JUnit 4 的 jar 包)

*

* 选中方法名,右键->Run As->JUint Test

*/

@Test

public
void testAop() {

ApplicationContext context=new ClassPathXmlApplicationContext("applicationContext.xml");

Book book=(Book) context.getBean("book");

book.add();

}

}

(5)运行一览:

【made by siwuxie095】

时间: 2024-10-03 16:06:53

基于AspectJ的XML方式进行AOP开发的相关文章

spring框架之AspectJ的XML方式完成AOP的开发

1. 步骤一:创建JavaWEB项目,引入具体的开发的jar包 * 先引入Spring框架开发的基本开发包 * 再引入Spring框架的AOP的开发包 * spring的传统AOP的开发的包 * spring-aop-4.2.4.RELEASE.jar * com.springsource.org.aopalliance-1.0.0.jar * aspectJ的开发包 * com.springsource.org.aspectj.weaver-1.6.8.RELEASE.jar * spring

Spring的AOP基于AspectJ的注解方式开发3

上上偏博客介绍了@Aspect,@Before 上篇博客介绍了spring的AOP开发的注解通知类型:@Before,@AfterThrowing,@After,@AfterReturning,@Around 也介绍了JoinPoint和ProceedingJoinPoint的区别 这篇博客讲@PointCut的使用,切入点注解----转载自https://www.cnblogs.com/ltfxy/p/9885742.html 这种方法便于维护管理 /** * 切面类:注解的切面类 */ @A

day39-Spring 11-Spring的AOP:基于AspectJ的XML配置方式

AspectJ的注解方式实现AOP

1.引入spring基础包2.引入aspectJ的jar包: com.springsource.org.aopalliance-*.jar com.springsource.org.aspectj.weaver-*.jar 3.spring.xml加入相关配置 <!-- 设置使用注解的类所在的包 --> <context:component-scan base-package="net.shibit.*"/> <!-- 使AspectJ注解起作用:自动为匹

Spring(使用XML方式的AOP)

方法1:<?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:context="http://www.springframework.org

基于Aspectj表达式配置的Spring AOP

AOP(Aspect-Oriented Programming, 面向切面编程):是一种新的方法论, 是对传统OOP(Object-Oriented Programming, 面向对象编程)的补充. 它其实就是将公共的东西收取出来进行处理,横向重复,纵向抽取.从而使得代码更简洁. 我的博客地址:https://www.cnblogs.com/themysteryofhackers/p/12013351.html 更新时间:2019-12-09 一.创建Maven项目 创建Maven项目的步骤和我

设计模式(六) xml方式实现AOP

1.1. Aop,  aspect object programming  面向切面编程 功能: 让关注点代码与业务代码分离! 关注点, 重复代码就叫做关注点: 切面, 关注点形成的类,就叫切面(类)! 面向切面编程,就是指 对很多功能都有的重复的代码抽取,再在运行的时候往业务方法上动态植入"切面类代码". 切入点, 执行目标对象方法,动态植入切面代码. 可以通过切入点表达式,指定拦截哪些类的哪些方法: 给指定的类在运行的时候植入切面类代码. 代码示例如下: UserDao  目标对象

xml方式实现aop编程

第一:引入jai文件 第二:引入aop名称空间 第三:配置aop 原文地址:https://www.cnblogs.com/hello-liyb/p/8313316.html

Spring--基于AspectJ的AOP开发

AspectJ简介 ·AspectJ是一个基于Java语言的AOP框架 ·Spring2.0以后新增了对AspectJ切点表达式支持 ·@AspectJ是AspectJ1.5新增功能,通过JDK5注解技术,允许直接在Bean类中定义切面 ·新版本Spring框架,建议使用AspectJ方式来开发AOP ·使用AspectJ需要导入Spring AOP和 Aspect/相关jar包 -spring-aop-4.2.4.RELEASE.jar -com.springsource.org.aopall