Spring关于AOP配置举例(注解方式)
2018-01-24 09:40
302 查看
1. 案例结构
2. 配置文件applicationContext.xml
2. 其他类
3. 测试效果
2. 配置文件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:util="http://www.springframework.org/schema/util" xmlns:aop="http://www.springframework.org/schema/aop" xmlns:context="http://www.springframework.org/schema/context" xmlns:p="http://www.springframework.org/schema/p" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.0.xsd http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-4.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd "> <!-- 用注解的方式启用AOP --> <aop:aspectj-autoproxy proxy-target-class="true"/> <!--扫描MyAspect --> <context:component-scan base-package="com.zhq.aspect"/> <!--生成一个MyCalc --> <bean class="com.zhq.aspect.MyCalc"/> </beans>
2. 其他类
package com.zhq.aspect; import java.util.Arrays; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.annotation.After; import org.aspectj.lang.annotation.AfterReturning; import org.aspectj.lang.annotation.AfterThrowing; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * 切面类,存放切面 * */ @Aspect @Component//可以扫描 @Order(2)//执行顺序 public class MyAspect { //通告,用于织入到某个指定的切入点。@Before表示此切面是一个前置通知,它会在方法执行前执行。 @Before("execution(* com.zhq.aspect.MyCalc.*(..))") public void beFore(JoinPoint jp) { //取所有参数 Object args[]=jp.getArgs(); //获取方法名 String name=jp.getSignature().getName(); System.out.println(name+"方法准备执行..."); System.out.println("输入参数:"+Arrays.toString(args)); } @After("execution(* com.zhq.aspect.MyCalc.*(..))") public void beAfter() { System.out.println("方法执行结束。"); } //返回通知 @AfterReturning(value="execution(* com.zhq.aspect.MyCalc.*(..))",returning="r") public void afterReturning(JoinPoint jp,Object r) { //获取方法名 String name=jp.getSignature().getName(); System.out.println(name+"开始返回结果..."); System.out.println("结果是:"+r); } //异常通知 @AfterThrowing("execution(* com.zhq.aspect.MyCalc.*(..))") public void afterThrowing(JoinPoint jp) { //获取方法名 String name=jp.getSignature().getName(); System.out.println(name+"出现异常..."); } }
package com.zhq.aspect; public class MyCalc { //连接点,织入点 public int add(int a,int b) { return a+b; } public int div(int a,int b) { return a-b; } public int chu(int a,int b) { return a/b; } }
package com.zhq.aspect; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; import org.springframework.core.annotation.Order; import org.springframework.stereotype.Component; /** * 切面类,存放切面 * */ @Aspect @Component//可以扫描 @Order(1)//执行顺序 public class MyLoggin { @Before("execution(* com.zhq.aspect.MyCalc.*(..))") public void beginLoggin() { System.out.println("开始日志...."); } }
package com.zhq.aspect; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Test { public static void main(String[] args) { ApplicationContext cxt=new ClassPathXmlApplicationContext("config/applicationContext.xml"); MyCalc ca=(MyCalc) cxt.getBean(MyCalc.class); //普通测试 System.out.println(ca.add(10, 20)); System.out.println(ca.div(10, 20)); //异常测试 System.out.println(ca.chu(10,0)); } }
3. 测试效果
相关文章推荐
- Spring关于AOP配置举例(XML配置文件方式)
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- spring注解方式配置AOP
- spring aop的使用(注解方式以及基于xml配置方式)
- 【Spring进阶】spring对AOP的支持-注解方式和配置方式
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- spring aop的使用(注解方式以及基于xml配置方式)
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- Spring-注解的方式配置AOP-案例
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- 实例说明Spring实现AOP的2种方式(注解和XML配置)
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- Spring实现AOP方式之二:使用注解配置 Spring AOP
- 用Spring配置文件或者注解方式实现AOP
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- Spring AOP基于注解的“零配置”方式实现以及一些其他知识点
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置