本月博客排行
-
第1名
wy_19921005 -
第2名
mft8899 -
第3名
java-007 - benladeng5225
- Anmin
年度博客排行
-
第1名
龙儿筝 -
第2名
宏天软件 -
第3名
benladeng5225 - wy_19921005
- vipbooks
- kaizi1992
- 青否云后端云
- e_e
- tanling8334
- sam123456gz
- arpenker
- zysnba
- fantaxy025025
- xiangjie88
- wallimn
- lemonhandsome
- ganxueyun
- jh108020
- Xeden
- xyuma
- zhanjia
- wangchen.ily
- johnsmith9th
- zxq_2017
- forestqqqq
- jbosscn
- daizj
- xpenxpen
- 喧嚣求静
- kingwell.leng
- lchb139128
- kristy_yy
- jveqi
- javashop
- lzyfn123
- sunj
- yeluowuhen
- ajinn
- lerf
- silverend
- chenqisdfx
- xiaoxinye
- flashsing123
- bosschen
- lyndon.lin
- zhangjijun
- sunnylocus
- lyj86
- paulwong
- sgqt
最新文章列表
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 ...