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