初始spring(八)
来源:互联网 发布:软件测试平均工资 编辑:程序博客网 时间:2024/06/02 13:13
spring代理之动态代理
IUserDao.java
package cn.itcast.b_dynamic;// 接口public interface IUserDao { void save();}
UserDao.java
package cn.itcast.b_dynamic;/** * 目标对象 * @author Jie.Yuan * */public class UserDao implements IUserDao{ @Override public void save() { System.out.println("-----已经保存数据!!!------"); }}
创建代理工厂
package cn.itcast.b_dynamic;import java.lang.reflect.InvocationHandler;import java.lang.reflect.Method;import java.lang.reflect.Proxy;/** * 给所有的dao创建代理对象【动态代理】 * * 代理对象,不需要实现接口 * @author Jie.Yuan * */public class ProxyFactory { // 维护一个目标对象 private Object target; public ProxyFactory(Object target){ this.target = target; } // 给目标对象,生成代理对象 public Object getProxyInstance() { return Proxy.newProxyInstance( target.getClass().getClassLoader(), target.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("开启事务"); // 执行目标对象方法 Object returnValue = method.invoke(target, args); System.out.println("提交事务"); return returnValue; } }); }}
App.java
package cn.itcast.b_dynamic;public class App { public static void main(String[] args) { // 目标对象 IUserDao target = new UserDao(); // 【原始的类型 class cn.itcast.b_dynamic.UserDao】 System.out.println(target.getClass()); // 给目标对象,创建代理对象 IUserDao proxy = (IUserDao) new ProxyFactory(target).getProxyInstance(); // class $Proxy0 内存中动态生成的代理对象 }}
运行结果:
开始事务…
—–已经保存数据!!!——
提交事务…
0 0
- 初始spring(八)
- 初始spring(三)
- 初始spring(七)
- 初始Spring(一)
- 初始Spring
- spring(八)---spring事务处理
- Spring笔记(八)
- spring 01 -spring初始
- Spring初始了解笔记
- 初始Spring Mvc
- Spring-Boot初始篇
- 初始Spring MVC
- spring 初始小例子
- Spring4-1 Spring初始
- spring--总体初始
- Spring学习笔记(八)
- (八)Spring 注解配置
- Spring(八)SSH集成
- PHP数据结构之六 PHP栈的应用举例【数制转换和括号匹配算法】
- 容器集群管理技术对比
- 台州oj 5061 迷宫地图
- 一款Hadoop(Hive)与传统的RDBMS数据库(oracle、mysql、postgresql...)间进行数据传递的工具
- HDU Problem 2059 龟兔赛跑 【dp】
- 初始spring(八)
- @Override is not allowed when implementing interface method
- 抽奖程序 C/C++
- linux下的$含义
- 改变PageControl指示点的颜色
- Codeforces Round #366 (Div. 2) A 【水题】& B【博弈】 & C 【思维】
- .net mvc3 三层架构的数据库连接问题 源代码
- spring mvc 图片上传
- POJ2479 Maximum sum