独自快乐|spring框架的入门学习:AOP和面向切面的事务( 四 )
首先创建一个动态代理类UserServiceProxyFactory
package com.huanfeng.proxy;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;import com.huanfeng.service.UserService;import com.huanfeng.service.UserServiceImpl;public class UserServiceProxyFactory implements InvocationHandler{ private UserService us; public UserServiceProxyFactory(UserService us){super();this.us=us; } public UserService getUserServiceProxy() {UserService userServiceProxy=(UserService) Proxy.newProxyInstance(UserServiceProxyFactory.class.getClassLoader(),UserServiceImpl.class.getInterfaces(),this);return userServiceProxy; } @Override public Object invoke(Object arg0, Method method, Object[] arg2) throws Throwable {System.out.println("开启事务");Object invoke=method.invoke(us, arg2);System.out.println("关闭事务");return invoke; }}首先这个类有一个动态代理UserService的方法 , 这个getUserServiceProxy方法中使用proxy.newProxyInstance方法 , 这个方法传递三个参数 , 第一个参数是一个类加载器(随便一个都行) , 第二个参数是需要代理类的接口 , 第三个是InvokeHandler接口 , 因为我们的这个代理类实现了InvokeHandler接口 , 所以我们只需要传递参数this就好了 , 然后因为实现了这个接口 , 所以需要重写其invoke方法 , 这个方法的主要参数第二个是增强的方法 , 第三个是方法的参数 , 所以我们可以在invoke方法进行内部调用 , 在调用前后进行方法的增强工作 。
@Test public void fun3() {UserService us=new UserServiceImpl();UserServiceProxyFactory factory=new UserServiceProxyFactory(us);UserService usProxy=factory.getUserServiceProxy();usProxy.add(); }首先我们创建一个Service , 然后创建动态代理类并将这个Service作为参数传递 。 调用getUserServiceProxy方法就可以获取到这个Service的代理类了 , 之后只要调用这个方法 , 其实它都会走代理类的invoke方法 , 所以我们可以在内部对其进行增强了 。
spring中aop的使用导报:
导入aop的约束:
推荐阅读
- 快乐棒棒糖|众多男神女神加盟,看看有你期待的人吗,江苏晚会阵容曝光
- 董事长|华熙生物董事长:公司围绕“健康、美丽、快乐事业”不断投入
- 高管|华熙生物董事长:公司围绕“健康、美丽、快乐事业”不断投入
- 何伟|【高管面对面】华熙生物:保留初心 做健康美丽快乐事业
- 可馨说娱乐1|官宣加入恋综,萧亚轩动态轰动了,金莎发文“想体验萧亚轩快乐”
- 过得比我快乐|领土只能远远看着!,世界没有完成统一的3个发达国家
- 白夜追娱1|唯独不见黄明昊引热议,粉丝晒照片打脸黑粉,谢娜晒快乐家族合影
- 小海|原创玖月奇迹王小玮官宣离婚后,独自登上央视舞台,组合已经解散?
- 用智能引领快乐走进新的领域|古代名将能像影视剧游戏中一样挡住乱箭齐发吗?真有一个人能挡住
- 用智能引领快乐走进新的领域|结果悲剧了,网友称厉害了,皇帝竟娶了祖孙两代
