Java乔晓松-基于注解的面向AOP(切面)编程
2013-05-21 17:30
381 查看
面向切面编程
自定义切面
Dao类:
DaoImpl类:
bean.xml配置文件:
测试类Test:
自定义切面
package cn.csdn.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 MyInterceptor { @Pointcut("execution (* cn.itcast.service.impl.PersonServiceBean.*(..))") private void anyMethod() {}//声明一个切入点 @Before("anyMethod() && args(name)") public void doAccessCheck(String name) { System.out.println("前置通知:"+ name); } @AfterReturning(pointcut="anyMethod()",returning="result") public void doAfterReturning(String result) { System.out.println("后置通知:"+ result); } @After("anyMethod()") public void doAfter() { System.out.println("最终通知"); } @AfterThrowing(pointcut="anyMethod()",throwing="e") public void doAfterThrowing(Exception e) { System.out.println("例外通知:"+ e); } @Around("anyMethod()") public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable { //if(){//判断用户是否在权限 System.out.println("进入方法"); Object result = pjp.proceed(); System.out.println("退出方法"); //} return result; } }
Dao类:
package cn.csdn.service; public interface PersonService { public void save(String name); public void update(String name, Integer id); public String getPersonName(Integer id); }
DaoImpl类:
package cn.csdn.service.impl; import cn.csdn.service.PersonService; public class PersonServiceBean implements PersonService { public String getPersonName(Integer id) { System.out.println("我是getPersonName()方法"); return "xxx"; } public void save(String name) { throw new RuntimeException("我爱例外"); //System.out.println("我是save()方法"); } public void update(String name, Integer id) { System.out.println("我是update()方法"); } }
bean.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: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/> <bean id="myInterceptor" class="cn.csdn.service.MyInterceptor"/> <bean id="personService" class="cn.csdn.service.impl.PersonServiceBean"></bean> </beans>
测试类Test:
package junit.test; import org.junit.BeforeClass; import org.junit.Test; import org.springframework.context.ApplicationContext; import org.springframework.context.support.ClassPathXmlApplicationContext; import cn.csdn.service.PersonService; public class SpringAOPTest { @BeforeClass public static void setUpBeforeClass() throws Exception { } @Test public void interceptorTest(){ ApplicationContext cxt = new ClassPathXmlApplicationContext("beans.xml"); PersonService personService = (PersonService)cxt.getBean("personService"); personService.save("xx"); } }
相关文章推荐
- Java乔晓松-基于注解的面向AOP(切面)编程
- 面向切面编程AOP:基于注解的配置
- 面向切面编程AOP:基于XML文件的配置
- 面向切面编程(AOP)应用,日志切面,基于注解
- spring 基于Aspect和注解的切面编程(aop)
- Spring面向切面编程——Spring实现AOP方式——通过注解实现
- Java动态代理之JDK动态代理和CGLib动态代理 面向切面编程AOP原理
- Java基于自定义注解的面向切面的实现
- 结合Java实例代码来理解 AOP--面向切面编程 中的各个术语
- 对JAVA中MVC设计模式、JAVAWEB的三层架构、AOP面向切面编程的总结
- Java面试之面向切面编程AOP的原理,
- spring学习笔记7--使用spring进行面向切面的(AOP)编程(1)注解方式实现
- Spring3.0 学习-AOP面向切面编程_Spring AOP的注解模式即Aspectj模式
- Spring 面向切面(AOP)编程,注解
- Spring AOP 面向切面编程相关注解
- spring_由注解实现AOP面向切面编程_实现动态代理
- Java实现AOP面向切面编程的实例教程
- Java实现AOP面向切面编程的实例教程
- Spring 通过注解方式实现AOP切面编程
- Spring容器切面编程 aop注解开发 五中通知类型