- 浏览: 933181 次
- 性别:
- 来自: 魔都
文章分类
- 全部博客 (745)
- MultiThread (19)
- My Plan (118)
- JavaBasic (61)
- MyInterview (104)
- InternetTechnique (5)
- ProjectConclusion (1)
- Maven (5)
- MogoDb (5)
- Hadoop (11)
- Memcached (6)
- TechniqueCollect (1)
- Ibaits (1)
- Android (34)
- ItLife (40)
- Tree (2)
- ProjectArchitect (7)
- Open Source (3)
- liunx (5)
- socket (8)
- Spring (27)
- DesginPattern (35)
- WebBasic (13)
- English (13)
- structs (1)
- structs2 (2)
- Oracle (17)
- Hibernate (2)
- JavaScript (4)
- Jdbc (1)
- Jvm (15)
- Ibatis (1)
- DataStructures (13)
- Https/Socket/Tcp/Ip (3)
- Linux (4)
- Webservice (7)
- Io (2)
- Svn (1)
- Css (1)
- Ajax (1)
- ExtJs (1)
- UML (2)
- DataBase (6)
- BankTechnique (3)
- SpringMvc (3)
- Nio (3)
- Load Balancing/Cluster (3)
- Tools (1)
- javaPerformanceOptimization (8)
- Lucene(SEO) (1)
- My Think (80)
- NodeJs (1)
- Quartz (1)
- Distributed-java (1)
- MySql (7)
- Project (4)
- junit (4)
- framework (1)
- enCache (1)
- git (2)
- SCJP (1)
- sd (1)
最新评论
-
lkjxshi:
你都这水平了还考这个证干嘛
SCJP 认证考试指南 -
钟逸华:
问的真多
百度java开发面试题(转) -
zuimeitulip:
觉得我就是这样的,从小阅读量就很少,导致现在的读的速度非常慢, ...
让读书成为一种习惯 -
DDT_123456:
我觉得你是不符合要求。问你hashmap的那个问题,你那样回答 ...
阿里面试2(转) -
jingjing0907:
刚刚写了很多读过此博客的感受,竟然没有发上去,以为我注册账号还 ...
让读书成为一种习惯
package cn.itcast.day3; import java.lang.reflect.Method; public interface Advice { void beforeMethod(Method method); void afterMethod(Method method); } package cn.itcast.day3; import java.lang.reflect.Method; public class MyAdvice implements Advice { long beginTime = 0; public void afterMethod(Method method) { // TODO Auto-generated method stub System.out.println("从传智播客毕业上班啦!"); long endTime = System.currentTimeMillis(); System.out.println(method.getName() + " running time of " + (endTime - beginTime)); } public void beforeMethod(Method method) { // TODO Auto-generated method stub System.out.println("到传智播客来学习啦!"); beginTime = System.currentTimeMillis(); } } package cn.itcast.day3; import java.lang.reflect.Constructor; import java.lang.reflect.InvocationHandler; import java.lang.reflect.Method; import java.lang.reflect.Proxy; import java.util.ArrayList; import java.util.Collection; public class ProxyTest { /** * @param args */ @SuppressWarnings("unchecked") public static void main(String[] args) { // Class clazzProxy1 = Proxy.getProxyClass(Collection.class.getClassLoader(), Collection.class); // System.out.println(clazzProxy1.getName()); // // System.out.println("----------begin constructors list----------"); // /*$Proxy0() // $Proxy0(InvocationHandler,int)*/ // Constructor[] constructors = clazzProxy1.getConstructors(); // for(Constructor constructor : constructors){ // String name = constructor.getName(); // StringBuilder sBuilder = new StringBuilder(name); // sBuilder.append('('); // Class[] clazzParams = constructor.getParameterTypes(); // for(Class clazzParam : clazzParams){ // sBuilder.append(clazzParam.getName()).append(','); // } // if(clazzParams!=null && clazzParams.length != 0) // sBuilder.deleteCharAt(sBuilder.length()-1); // sBuilder.append(')'); // System.out.println(sBuilder.toString()); // } // // System.out.println("----------begin methods list----------"); // /*$Proxy0() // $Proxy0(InvocationHandler,int)*/ // Method[] methods = clazzProxy1.getMethods(); // for(Method method : methods){ // String name = method.getName(); // StringBuilder sBuilder = new StringBuilder(name); // sBuilder.append('('); // Class[] clazzParams = method.getParameterTypes(); // for(Class clazzParam : clazzParams){ // sBuilder.append(clazzParam.getName()).append(','); // } // if(clazzParams!=null && clazzParams.length != 0) // sBuilder.deleteCharAt(sBuilder.length()-1); // sBuilder.append(')'); // System.out.println(sBuilder.toString()); // } // // System.out.println("----------begin create instance object----------"); // //Object obj = clazzProxy1.newInstance(); // Constructor constructor = clazzProxy1.getConstructor(InvocationHandler.class); // class MyInvocationHander1 implements InvocationHandler{ // // public Object invoke(Object proxy, Method method, Object[] args) // throws Throwable { // // TODO Auto-generated method stub // return null; // } // // } // Collection proxy1 = (Collection)constructor.newInstance(new MyInvocationHander1()); // // System.out.println(proxy1); // proxy1.clear(); // //proxy1.size(); // //System.out.println("111111111111111"); // // Collection proxy2 = (Collection)constructor.newInstance(new InvocationHandler(){ // // public Object invoke(Object proxy, Method method, Object[] args) // throws Throwable { // return null; // } // // }); //动态代理 final ArrayList target = new ArrayList(); Collection proxy3 = (Collection)getProxy(target,new MyAdvice()); proxy3.add("zxx"); proxy3.add("lhm"); proxy3.add("bxd"); //System.out.println(proxy3.size()); //System.out.println(proxy3.getClass().getName()); } //把目标抽取成参数 private static Object getProxy(final Object target,final Advice advice) { Object proxy3 = Proxy.newProxyInstance( target.getClass().getClassLoader(), /*new Class[]{Collection.class},*/ target.getClass().getInterfaces(), new InvocationHandler(){ public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { advice.beforeMethod(method); Object retVal = method.invoke(target, args); advice.afterMethod(method); return retVal; } } ); return proxy3; } }
发表评论
-
spring原理
2013-07-31 23:21 8491、spring原理 s ... -
通过实例浅谈Spring运作机制
2013-07-31 23:06 1124看到这个标题大家可能又想:哎,又一个重新发明轮子的人。在这里 ... -
spring用到的设计模式
2013-06-24 21:45 1165spring源码也读了两遍了,但对于里面描述的关系还是不太 ... -
SPRING事务的属性有哪些?其中,事务隔离级别有哪几种?什么情况需要使用这几种事务隔离级别?
2013-04-14 20:45 3812Spring 声明式事务,propagation属性列表 PR ... -
Spring定时任务的几种实现
2013-01-24 10:32 989Spring定时任务的几种实现 近日项目开发中需要执行一些 ... -
Spring多数据源解决方案
2012-10-02 22:49 1049... -
spring是如何管理 事务的
2012-07-08 14:43 1495Spring提供的事务管理可以分为两类:编程式的和声明式的。 ... -
【第六章】 AOP 之 6.9 代理机制 ——跟我学spring3
2012-07-07 12:36 846Spring AOP通过代理模式实现,目前支持两 ... -
【第九章】 Spring的事务 之 9.1 数据库事务概述 ——跟我学spring3
2012-07-07 12:37 9639.1 数据库事务概述 事 ... -
【第九章】 Spring的事务 之 9.2 事务管理器 ——跟我学spring3
2012-07-07 12:37 9589.2.1 概述 ... -
【第九章】 Spring的事务 之 9.3 编程式事务 ——跟我学spring3
2012-07-06 00:03 8899.3 编程式事务 9.3.1 编程式事务 ... -
【第九章】 Spring的事务 之 9.4 声明式事务 ——跟我学spring3
2012-07-06 00:03 7249.4 声明式事务 9.4.1 声明式事务 ... -
我对AOP的理解
2012-07-06 00:02 8541、问题 问题:想要添加日志记录 ... -
我对IoC/DI的理解
2012-07-06 00:01 999IoC IoC: Inversion of ... -
基于JDK动态代理和CGLIB动态代理的实现Spring注解管理事务(@Trasactional)到底有什么区别。
2012-07-06 00:02 2327基于JDK动态代理和CGLIB动态代理的实现S ... -
Spring对事务管理的支持的发展历程(基础篇)
2012-07-05 23:00 9501、问题 Java代 ... -
阅读spring源码
2012-07-05 21:22 1679读Spring源码之前,你要先清楚,为什么你要用S ... -
spring aop 详解
2012-07-01 18:41 1149文章链接:http://stamen.itey ... -
Spring ioc 详解
2012-07-01 18:14 2024文章链接:http://stamen.itey ... -
spring事务探索
2012-07-01 16:46 980文章链接:http://www.iteye.com/topic ...
相关推荐
spring动态代理类的示范小版本很简单的例子
Spring MVC中利用动态代理记录日志,通过注解的方式记录日志。Spring MVC+ Restful。
Spring 动态代理和aop切面编程例子,自己写的例子!!!!!!!
Spring动态代理第三方依赖jar 包含aopalliance-1.0、aspectjrt-1.7.2、aspectjweaver-1.7.2
通过代码了解springaop原理,代码采用jdk的动态代理相关类Proxy、InvocationHandler解释动态代理模式
jdk动态代理--适合企业级开发,但是它要求必须面向接口编程,假如目标类没有实现接口,则没办法代理这个类。 cglib代理, 1.cglib(Code Generation Library)是一个强大的,高性能,高质量的Code生成类库。它可以在...
结合spring框架实现的动态代理代理,spring,Proxy
对于学习spring的朋友来说,弄懂代理代理至关重要,希望这篇文章会对大家有所帮助
Spring Dao层和Services层的动态代理二
Spring对Dao层及Service层的动态代理
spring之AOP(动态代理),包括jdk动态代理和CGLib动态代理
Spring的使用方法讲解,及其配置文件/和动态代理的原理!使用
是一个描述动态代理的实例,用的是反射的方法,感觉还是比较容易理解得
这是一个spring 的动态代理详细讲解
NULL 博文链接:https://jadeluo.iteye.com/blog/1940019
NULL 博文链接:https://ylxy3058.iteye.com/blog/2224140
spring aop jdk 动态代理的底层实现解析模拟
主要对Spring AOP的相关概念和简单的静态代理、动态代理以及常见的几种AOP配置方式做总结学习。主要包括:1. AOP的常见概念 2. 静态代理 3. jdk动态代理 4. Aspectj and Aspectjweaver 5. **aop-config** 6. CGLIB ...