SpringAOP:简单的Aspect案例
来源:互联网 发布:c语言100经典实例编程 编辑:程序博客网 时间:2024/05/16 01:07
切面类
package com.xbz.learn.spring.aspect;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.springframework.stereotype.Component;/** * 切面类 * @author xubaozhong * */@Aspectpublic class FirstAspect { @Before("execution (* com.xbz.learn.spring.aspect.FirstAspectTarget.*(..))") public void doBefore(){ System.out.println("Before..."); } @After("execution (* com.xbz.learn.spring.aspect.FirstAspectTarget.*(..))") public void doAfter(){ System.out.println("After..."); } @AfterReturning("execution (* com.xbz.learn.spring.aspect.FirstAspectTarget.*(..))") public void AfterReturning(){ System.out.println("AfterReturning..."); } @AfterThrowing("execution (* com.xbz.learn.spring.aspect.FirstAspectTarget.*(..))") public void rollbackTransaction(){ System.out.println("AfterThrowing..."); }}
目标类
package com.xbz.learn.spring.aspect;import org.springframework.stereotype.Component;/** * 切面目标类,被拦截的目标类 * @author xubaozhong * */@Componentpublic class FirstAspectTarget { public void doService(){ System.out.println("doService----处理业务逻辑"); throw new RuntimeException(new Exception("业务报错")); }}
JavaConfig类
package com.xbz.learn.spring.aspect;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.ComponentScan;import org.springframework.context.annotation.Configuration;import org.springframework.context.annotation.EnableAspectJAutoProxy;@Configuration//@ComponentScan@EnableAspectJAutoProxypublic class FirstAspecJavaConfig { @Bean public FirstAspect getFirstAspect(){ return new FirstAspect(); } @Bean public FirstAspectTarget getFirstAspectTarget(){ return new FirstAspectTarget(); } }
Test类
package com.xbz.learn.spring.aspect;import org.junit.Test;import org.junit.runner.RunWith;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.test.context.ContextConfiguration;import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;@RunWith(SpringJUnit4ClassRunner.class)@ContextConfiguration(classes={FirstAspecJavaConfig.class})public class FirstAspectTest { @Autowired private FirstAspectTarget target; @Test public void testFirstAspect(){ target.doService(); }}
然而在上面的切面类中并没有看到Pointcut身影,而且多个execution很是繁重,使用如下替代
另一种切面写法
package com.xbz.learn.spring.aspect;import org.aspectj.lang.annotation.After;import org.aspectj.lang.annotation.AfterReturning;import org.aspectj.lang.annotation.AfterThrowing;import org.aspectj.lang.annotation.Around;import org.aspectj.lang.annotation.Aspect;import org.aspectj.lang.annotation.Before;import org.aspectj.lang.annotation.Pointcut;import org.springframework.stereotype.Component;/** * 切面类 * @author xubaozhong * */@Aspectpublic class FirstAspect { @Pointcut("execution (* com.xbz.learn.spring.aspect.FirstAspectTarget.*(..))") public void pointcut(){ } @Before("pointcut()") public void doBefore(){ System.out.println("Before..."); } @After("pointcut()") public void doAfter(){ System.out.println("After..."); } @AfterReturning("pointcut()") public void AfterReturning(){ System.out.println("AfterReturning..."); } @AfterThrowing("pointcut()") public void rollbackTransaction(){ System.out.println("AfterThrowing..."); }}
0 0
- SpringAOP:简单的Aspect案例
- springAOP的简单实现
- SpringAop切面的简单使用
- 直男版简单的springAop例子
- 一个简单的Aspect框架解读
- Aspect注解实现简单的切面
- 回顾SpringAOP,简单的测试,加深理解
- SpringAOP过滤目标方法的简单实现
- Spring Aspect简单实例
- springAOP简单使用
- springAop简单介绍
- SpringAOP案例(一)XML方式
- SpringAop在实际项目中的使用案例
- Spring AOP 的@Aspect
- 基于@Aspect的AOP
- jdbc的简单案例
- activeMQ的简单案例
- 简单的Intent案例
- Async Task 用法介绍
- haproxy配置详解
- 20160727------JAVA基础语法【运算符、键盘输入】
- 价格录入input
- 入门经典--硬币问题dp递归加递推
- SpringAOP:简单的Aspect案例
- Android平台下实现一个进程管理器
- Mercer定理
- Invert Binary Tree
- intellij idea常用快捷键使用
- Windows下使用Redis(一)安装使用
- React Native学习01 - 在Mac平台上搭建iOS开发环境
- 磁盘临时表与内存临时表的差异
- Android-自定义view之圆(选择程度圆以及进度圆)详解