编程方式实现Spring的aop
来源:互联网 发布:数据库常用select语句 编辑:程序博客网 时间:2024/06/04 18:42
一、UserService接口
<span style="font-size:18px;">package com.seven.spring.m_aop_helloworld;public interface UserService { void queryUsers(); void saveUser(); void deleteUser();}</span>二、UserServiceImpl实现类
<span style="font-size:18px;">package com.seven.spring.m_aop_helloworld;public class UserServiceImpl implements UserService{@Overridepublic void queryUsers() {System.out.println("查询一个User");}@Overridepublic void saveUser() {System.out.println("保存一个User");}@Overridepublic void deleteUser() {System.out.println("删除一个User");}}</span>这种是有接口的方式Spring会按照JDK动态代理的方式来实现
三、拦截方法的类LogAdvice实现了MethodInterceptor接口,
<span style="font-size:18px;">package com.seven.spring.m_aop_helloworld;import org.aopalliance.intercept.MethodInterceptor;import org.aopalliance.intercept.MethodInvocation;public class LogAdvice implements MethodInterceptor{public Object invoke(MethodInvocation methodInvocation) throws Throwable {System.out.println("==开始执行操作==");Object res = methodInvocation.proceed();//执行原方法System.out.println("==操作结束==");return res;}}</span>
四、测试类MainTest,在测试类中拦截了save和delete相关的方法,query相关的方法没有被拦截
<span style="font-size:18px;">package com.seven.spring.m_aop_helloworld;import org.junit.Test;import org.springframework.aop.Advisor;import org.springframework.aop.framework.ProxyFactory;import org.springframework.aop.support.DefaultPointcutAdvisor;import org.springframework.aop.support.NameMatchMethodPointcut;/** * 使用编程方式实现aop * @author Administrator * */public class MainTest {@Testpublic void test1(){UserService userService = new UserServiceImpl();//1.声明切入点,表示要拦截哪些方法NameMatchMethodPointcut pointcut = new NameMatchMethodPointcut();pointcut.addMethodName("save*");pointcut.addMethodName("delete*");//2.声明一个通知,表示拦截到之后要做什么事LogAdvice logAdvice = new LogAdvice();//3.组装一个切面(切面=切入点+通知)Advisor advisor = new DefaultPointcutAdvisor(pointcut, logAdvice);//4.为原对象生成一个代理对象ProxyFactory proxyFactory = new ProxyFactory();proxyFactory.addAdvisor(advisor);//添加一个切面proxyFactory.setTarget(userService);//指定目标对象0 userService = (UserService) proxyFactory.getProxy();//得到一个代理对象//=========================//使用的是代理对象userService.saveUser();System.out.println("--------------");userService.queryUsers();System.out.println("--------------");userService.deleteUser();}}</span>
0 0
- 编程方式实现Spring的aop
- spring AOP面向切面编程的四种实现方式
- spring框架—AOP编程的两种实现方式
- Spring实现AOP的方式
- Spring实现AOP的方式
- Spring实现AOP的方式
- spring实现AOP的方式
- Spring AOP实现的方式
- Spring实现AOP的方式
- spring中XML方式实现AOP编程
- Spring:AOP(二)编程方式实现AOP
- Spring的AOP(四):自动代理及Aspect J的方式实现Aop编程
- Spring AOP实现方式
- Spring AOP实现方式
- Spring AOP实现方式
- Spring的Aop的实现方式
- Spring实现AOP的4种方式
- Spring实现AOP的4种方式
- andriod提高开发效率的第三方类库和框架
- A*寻路算法入门(七)
- 点云数据处理
- java UDP 发送报文问题
- 《The Tao Of Programming》——编程之道
- 编程方式实现Spring的aop
- 【Leetcode】Binary Tree Level Order Traversal
- 利用MATLAB画一些简单图形
- 【Java EE (Struts2 + Spring + Hibernate)开发】:开发环境配置(待续)
- 状态机的按动作等待
- 1097. Deduplication on a Linked List (25)
- C#---字符串String
- 学习笔记3:Struts2+Spring JDBC+Spring
- 0018.scala文件的读取写入操作代码