本月博客排行
-
第1名
kaizi1992 -
第2名
wy_19921005 -
第3名
arpenker - jh108020
- silverend
年度博客排行
-
第1名
龙儿筝 -
第2名
宏天软件 -
第3名
青否云后端云 - wy_19921005
- benladeng5225
- vipbooks
- kaizi1992
- e_e
- arpenker
- tanling8334
- javashop
- sam123456gz
- zysnba
- fantaxy025025
- xiangjie88
- lemonhandsome
- wallimn
- ganxueyun
- Xeden
- zhanjia
- xyuma
- wangchen.ily
- jh108020
- johnsmith9th
- zxq_2017
- jbosscn
- forestqqqq
- daizj
- ajinn
- xpenxpen
- 喧嚣求静
- silverend
- kingwell.leng
- kristy_yy
- lchb139128
- jveqi
- lzyfn123
- java-007
- sunj
- yeluowuhen
- lerf
- xiaoxinye
- flashsing123
- chenqisdfx
- bosschen
- zhangjijun
- lyndon.lin
- sunnylocus
- lyj86
- paulwong
最新文章列表
Groovy元编程MOP(ExpandoMetaClass:EMC)的应用场景
使用ExpandoMetaClass和Category可以实现元编程。ExpandoMetaClass可以动态添加和修改类的构造器,方法和属性。Category只能动态添加和修改类的方法。
当使用EMC动态添加或修改方法时,闭包Closure作为方法体被传入,它的delegate指向调用此方法的实例。
具体使用可参考:http://www.groovyq.net/node/75
1 ...
用Groovy源编程(MOP)动态拦截(AOP)方法(比如记录String的concat和toUpperCase方法的耗费时间)
实现AOP的方式有很多种,像Spring的AOP,它只能拦截Spring托管的bean;Groovy AST
Transformations、ASM等在编译阶段通过修改字节码也可以做AOP;JAVA HOOK也可以做,但比较麻烦。
Groovy MOP提供了一种很简单的方法实现AOP。
下面通过例子试用一下:
如果想动态拦截某个方法,不想改源代码(或者不能改源码,比如Strin ...