注解方式实现Spring的aop
来源:互联网 发布:淘宝外卖粮票怎么用 编辑:程序博客网 时间:2024/05/18 00:36
一、UserService接口
<span style="font-size:18px;">package com.seven.spring.o_aop_annotation;import java.util.List;public interface UserService {//为了后置通知返回一个结果 List<Object> queryUsers(); void saveUser(); void deleteUser();}</span>二、UserServiceImpl实现类
<span style="font-size:18px;">package com.seven.spring.o_aop_annotation;import java.util.ArrayList;import java.util.List;public class UserServiceImpl implements UserService{public List<Object> queryUsers() {System.out.println("查询一个User");return new ArrayList<Object>();}public void saveUser() {System.out.println("保存一个User");}public void deleteUser() {int i= 1/0;System.out.println("删除一个User");}}</span>三、通知对象LogAdvice
<span style="font-size:18px;">package com.seven.spring.o_aop_annotation;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;/** * 通知对象 * @author Administrator * */@Aspect//定义一个切面public class LogAdvice{@Pointcut("execution(* *(..))")private void MyPointCut(){}//前置通知@Before("MyPointCut()") public void before(){ System.out.println("==before=="); } //最终通知@After("MyPointCut()") public void after(){ System.out.println("==after=="); } //后置通知//returning="returnValue"接受原方法执行后的返回值@AfterReturning(pointcut="MyPointCut()",returning="returnValue") public void afterReturning(Object returnValue){System.out.println(returnValue); System.out.println("==afterReturning=="); } //异常通知@AfterThrowing(pointcut="MyPointCut()",throwing="ex") public void afterThrows(Exception ex){System.out.println(ex); System.out.println("==afterThrows=="); } //环绕通知//一定要在环绕通知中,执行完本方法后,要有返回结果 @Around("MyPointCut()") public Object around(ProceedingJoinPoint joinPoint){ try { System.out.println("环绕通知(前)");Object object=joinPoint.proceed();//执行原方法System.out.println("环绕通知(后)");return object;} catch (Throwable e) { throw new RuntimeException(e);} }}</span>四、applicationContext.xml
<span style="font-size:18px;"><?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:tx="http://www.springframework.org/schema/tx" 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/tx http://www.springframework.org/schema/tx/spring-tx-2.5.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.5.xsd"><!-- 配置UserService对象 --><bean id="userService" class="com.seven.spring.o_aop_annotation.UserServiceImpl"></bean><!-- 配置一个通知对象 --> <bean id="logAdvice" class="com.seven.spring.o_aop_annotation.LogAdvice"></bean> <!-- 使用注解的方式配置切面,必须要有这个配置--> <aop:aspectj-autoproxy></aop:aspectj-autoproxy></beans></span>五、测试类MainTest
<span style="font-size:18px;">package com.seven.spring.o_aop_annotation;import org.junit.Test;import org.springframework.context.ApplicationContext;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.seven.oa.service.crm.RoleService;/** * 使用编程方式实现aop * @author Administrator */public class MainTest {@Testpublic void testUserService(){ApplicationContext ac = new ClassPathXmlApplicationContext("applicationContext.xml", getClass());//这里获取的是代理对象UserService userService = (UserService) ac.getBean("userService");System.out.println(userService.getClass());//=========================//使用的是代理对象userService.saveUser();System.out.println("--------------");userService.queryUsers();System.out.println("--------------");userService.deleteUser();System.out.println("--------------");}}</span>
0 0
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Spring使用注解的方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 应用Spring的注解方式实现AOP
- 注解方式实现Spring的aop
- 应用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Spring 注解方式实现的AOP
- 使用Spring的注解方式实现AOP
- 使用Spring的注解方式实现AOP
- Spring 注解方式实现的AOP
- 使用Spring的注解方式实现AOP
- Reject Message 实现-1
- unity5.0资源打包AssetBundle
- 大型分布式网站架构设计与实践 第一章《面向服务的体系架构(SOA)》1.1基于TCP协议的RPC
- 普通非校园网用户如何使用IPV6连接网络?[已失效]
- OpenJudge_P8207 和为给定数
- 注解方式实现Spring的aop
- 设计模式 - 创建型模式 - 单例模式
- C/C++学习(一)题目:求1+2+…+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字以及条件判断语句(A?B:C)。
- GitLab 使用163邮箱发送邮件
- 【OJ二分06】月度开销
- Local declaration of 'XXX' hides instance variable
- Deep learning论文笔记一:ImageNet Classification with Deep Convolutional Neural Networks
- [android] 优化UI卡顿现象
- kettle用xstart打开报错failed to write core dump & the crash happend outside 解决办法