AspectJ 基于注解的实现前置通知
2017-04-06 20:52
204 查看
Spring环境下AspectJ 基于注解的实现前置通知
所需jar:http://pan.baidu.com/s/1qXH1Mnq
接口
package com.hk.spring.annotation; public interface ISomeService { public void doFirst(); public void doSecond(); public String doThird(); }
接口实现
package com.hk.spring.annotation; public class ISomeServiceImpl implements ISomeService { @Override public void doFirst() { System.out.println("主业务逻辑doFirst执行"); } @Override public void doSecond() { System.out.println("主业务逻辑doSecond执行"); } @Override public String doThird() { System.out.println("主业务逻辑doThird执行"); return "ABC"; } }
切面类
package com.hk.spring.annotation; import org.aspectj.lang.annotation.Aspect; import org.aspectj.lang.annotation.Before; /** * 定义一个简单的POJO类作为切面 * @author 浪丶荡 * */ @Aspect //表示当前类为切面 public class MyAspect { @Before("execution(* *..ISomeService.doFirst(..))") //表示前置通知的切入点表达式 public void before(){ System.out.println("前置方法"); } }
配置
<?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="someService" class="com.hk.spring.annotation.ISomeServiceImpl"></bean> <!-- 注册切面 --> <bean id="myAspect" class="com.hk.spring.annotation.MyAspect"></bean> <!-- 注册Aspect的自动代理对象 --> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> </beans>
测试
package com.hk.spring.annotation; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; public class Mytest { @Test public void test1(){ String resoure = "com/hk/spring/annotation/applicationContext.xml"; ApplicationContext ac = new ClassPathXmlApplicationContext(resoure); ISomeService service = (ISomeService) ac.getBean("someService"); service.doFirst(); service.doSecond(); service.doThird(); } }
结果
前置方法 主业务逻辑doFirst执行 主业务逻辑doSecond执行 主业务逻辑doThird执行
相关文章推荐
- Spring 基于注解,实现 前置通知、后置通知、返回通知、 异常通知 、后置通知
- AspectJ 基于注解的实现各种通知
- Spring 通过来AOP 实现前置,环绕,异常通知,注解(转)
- 使用Spring 2.0新特性实现前置通知--基于Annotation方式
- Spring框架学习-深入理解AOP02----AOP简介,AspectJ,AOP基于注解和XML配置(5种通知,切面优先级)
- AOP2(注解实现 前置,后置,环绕通知)
- Spring4深入理解AOP02----AOP简介,AspectJ,AOP基于注解和XML配置(5种通知,切面优先级)
- 基于注解的Spring AOP实现demo(测试通知顺序)
- Spring 通过来AOP 实现前置,环绕,异常通知,注解
- 基于注解的前置通知-佟刚老师《Spring4视频教程》学习笔记(17)
- 使用Spring 2.0新特性实现前置通知--基于Schema方式
- AspectJ-基于注解的实现-切入点的定义
- AOP-AspectJ-基于XML的实现——各种通知
- 在idea创建spring项目,基于Aspectj的aop操作,执行前置和后置通知出现错误
- Srping AOP基于注解和配置文件方式实现前通知,后通知,环绕通知,异常通知,最终通知
- 【JavaWeb-24】AOP介绍和术语、手动/半自动/自动实现AOP、基于XML和注解的AspectJ使用、JdbcTemplate的使用
- Spring整理系列(14)——基于注解的AspectJ风格实现spring AOP
- Spring 通过AOP 来实现前置,环绕,异常通知,注解
- Spring_Spring与AOP_AspectJ基于注解的AOP实现
- Spring 【Aspectj】【注解】引入通知 ------ 为【目标对象】添加,【新接口】及【实现】