Spring aop测试实例
2014-05-04 09:13
225 查看
1、service代码:
package com.huizhan.domain.service;
public interface TestService {
public void test();
public void test001();
}
2、service实现层代码:
package com.huizhan.domain.service.impl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.huizhan.domain.service.TestService;
@Service
@Transactional
public class TestServiceImpl implements TestService{
@Override
public void test() {
System.out.println("**********************service中的测试*******************8");
}
@Override
public void test001() {
System.out.println("test001*****************");
}
}
3、AopInterceptor拦截器定义
package com.huizhan.web.interceptors;
import org.aspectj.lang.JoinPoint;
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;
/**
* AOP切面
*
* @author feng
*
*/
// 声明此类为一个切面
@Aspect
public class AopInterceptor {
// execution为执行的意思,*代表任意返回值,然后是包名,.*意思是包下面的所有子包。(..)代表各种方法.
@Pointcut("execution(* com.huizhan.domain.service.impl.TestServiceImpl.test(..))")
private void anyMethod() {
}// 定义一个切入点
@Before("anyMethod()")
public void doAccessCheck() {
System.out.println("前置通知");
}
@AfterReturning("anyMethod()")
public void doAfter(JoinPoint joinPoint) {
System.out.println("***************后置通知,方法名字="
+ joinPoint.getSignature().getName());
}
@After("anyMethod()")
public void after() {
System.out.println("最终通知");
}
@AfterThrowing("anyMethod()")
public void doAfterThrow() {
System.out.println("例外通知");
}
@Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("进入环绕通知");
Object object = pjp.proceed();// 执行该方法
System.out.println("退出方法");
return object;
}
}
4、applicationContext.xml配置
<!--************************ aop测试bean的配置 开始*************-->
<bean id="testInterceptors" class="com.huizhan.web.interceptors.TestInterceptors"/>
package com.huizhan.domain.service;
public interface TestService {
public void test();
public void test001();
}
2、service实现层代码:
package com.huizhan.domain.service.impl;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;
import com.huizhan.domain.service.TestService;
@Service
@Transactional
public class TestServiceImpl implements TestService{
@Override
public void test() {
System.out.println("**********************service中的测试*******************8");
}
@Override
public void test001() {
System.out.println("test001*****************");
}
}
3、AopInterceptor拦截器定义
package com.huizhan.web.interceptors;
import org.aspectj.lang.JoinPoint;
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;
/**
* AOP切面
*
* @author feng
*
*/
// 声明此类为一个切面
@Aspect
public class AopInterceptor {
// execution为执行的意思,*代表任意返回值,然后是包名,.*意思是包下面的所有子包。(..)代表各种方法.
@Pointcut("execution(* com.huizhan.domain.service.impl.TestServiceImpl.test(..))")
private void anyMethod() {
}// 定义一个切入点
@Before("anyMethod()")
public void doAccessCheck() {
System.out.println("前置通知");
}
@AfterReturning("anyMethod()")
public void doAfter(JoinPoint joinPoint) {
System.out.println("***************后置通知,方法名字="
+ joinPoint.getSignature().getName());
}
@After("anyMethod()")
public void after() {
System.out.println("最终通知");
}
@AfterThrowing("anyMethod()")
public void doAfterThrow() {
System.out.println("例外通知");
}
@Around("anyMethod()")
public Object doBasicProfiling(ProceedingJoinPoint pjp) throws Throwable {
System.out.println("进入环绕通知");
Object object = pjp.proceed();// 执行该方法
System.out.println("退出方法");
return object;
}
}
4、applicationContext.xml配置
<!--************************ aop测试bean的配置 开始*************-->
<bean id="testInterceptors" class="com.huizhan.web.interceptors.TestInterceptors"/>
相关文章推荐
- Spring AOP 入门实例 一
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- 一个用Spring AOP实现异常处理和记录程序执行时间的实例--邵京国
- Spring AOP入门实例详解
- spring AOP 之 xml 配置实现(附 Java 代码实例)
- Spring Aop实例之xml配置
- Spring Aop实例
- Spring+Maven+Ehcache缓存实例测试
- 白话Spring(基础篇)---AOP(实例篇-4)
- Spring Aop实例之AspectJ注解配置
- 05 Spring Aop实例(AOP 如此简单)@Aspect、@Around 注解方式配置
- spring AOP 之 注解 配置实现(附 Java 代码实例)
- Spring Boot AOP实例
- spring.net 学习笔记之 AOP (异常记录实例)转
- Spring---AOP基本概念以及Advice5种类型的通知注解应用实例
- SpringAOP实例自定义Annotation形式详解
- Spring aop 小实例demo
- 5.8 把输出日志的实例改成用Spring的AOP来实现
- Spring AOP 测试
- spring 4.0 AOP (使用AspectJ的注解方式 的aop实现)简单实例