用Spring配置文件或者注解方式实现AOP
2009-05-03 09:34
816 查看
配置文件bean.xml:
MyIterceptor.java
测试类:
<?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/schema/context" xmlns:aop="http://www.springframework.org/schema/aop" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd "> <aop:aspectj-autoproxy></aop:aspectj-autoproxy> <bean id="myIterceptor" class="com.huqianhao.service.MyIterceptor"> </bean> <bean id="personService" class="com.huqianhao.service.impl.PersonServiceBean"> </bean> <aop:config> <aop:aspect id="aop" ref="myIterceptor"> <aop:pointcut expression="execution(* com.huqianhao.service.impl.PersonServiceBean.*(..))" id="mycut" /> <aop:before method="doAccessCheck" pointcut-ref="mycut" arg-names="name"/> <aop:after-returning method="doAfterReturning" pointcut-ref="mycut"/> <aop:after-throwing method="doAfterThrowing" pointcut-ref="mycut"/> <aop:after method="doAfter" pointcut-ref="mycut"/> <aop:around method="doAround" pointcut-ref="mycut"/> </aop:aspect> </aop:config> </beans>
MyIterceptor.java
package com.huqianhao.service; import org.aspectj.lang.ProceedingJoinPoint; 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; @Aspect public class MyIterceptor { // @Pointcut("execution (* com.huqianhao.service.impl.PersonServiceBean.*(..))") private void anyMethod() { } // @Before("anyMethod()&& args(name)") public void doAccessCheck() { System.out.println("前置通知:"); } // @AfterReturning(pointcut = "anyMethod()", returning = "result") public void doAfterReturning() { System.out.println("后置通知:"); } // @AfterThrowing(pointcut = "anyMethod()", throwing = "e") public void doAfterThrowing() { System.out.println("例外通知:"); } // @After("anyMethod()") public void doAfter() { System.out.println("最终通知"); } // @Around("anyMethod()") public Object doAround(ProceedingJoinPoint pjp) throws Throwable { System.out.println("进入方法"); Object result = pjp.proceed(); System.out.println("退出方法"); return result; } } package com.huqianhao.service.impl; import com.huqianhao.service.PersonService; public class PersonServiceBean implements PersonService { public void save(String name) { System.out.println("我是save方法"); // throw new RuntimeException("出異常啦"); } public String getPersonName(Integer id) { System.out.println("我是getPersonName方法"); return "XXX"; } public void update(String name, Integer id) { System.out.println("我是update方法"); } }
测试类:
package junit.test; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import com.huqianhao.service.PersonService; public class SpringAOPTest { @Test public void instanceSpring() { ApplicationContext context = new ClassPathXmlApplicationContext( "beans.xml"); PersonService personService = (PersonService) context.getBean("personService"); personService.save("zhangsan"); } }
相关文章推荐
- 用Spring配置文件或者注解方式实现AOP
- spring之aop编程——基于注解、xml配置文件方式
- spring学习(七)—AOP通过配置文件方式实现
- spring的事务管理(配置文件方式和注解方式实现、转账环境搭建)
- Spring AOP之配置文件实现方式
- Spring实现AOP方式之二:使用注解配置 Spring AOP
- spring AOP实现(Annotation方式/静态文件配置方式)
- Spring---->采用静态配置文件方式实现AOP
- spring-aop 配置文件方式实现
- Spring AOP基于注解的“零配置”方式实现以及一些其他知识点
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- 8 -- 深入使用Spring -- 4...6 AOP代理:基于注解的XML配置文件的管理方式
- Spring整理11 -- 面对切面(AOP)1 -- 注解配置的方式实现AOP
- Spring整理12 -- 面对切面(AOP)2 -- 配置文件的方式实现AOP
- Spring系列(四):Spring AOP详解和实现方式(xml配置和注解配置)
- Spring学习笔记(四)Spring配置文件方式实现AOP
- Spring---->采用静态配置文件方式实现AOP
- Spring的AOP分为注解和配置两种方式实现
- Spring整理12 -- 面对切面(AOP)2 -- 配置文件的方式实现AOP
- 实例说明Spring实现AOP的2种方式(注解和XML配置)