spring文档把方法替换归为一种注入形式,不过它和你之前见过的注入有很大的不同,借助方法注入,我们可以任意替换bean方法的实现,同时无需改变你正在修改的bean之源代码
这是一个简单bean的实现














借助spring的方法替换,你可以替换ReplacementTarget类的任意方法,本例替换了String参数的fromMessage
首先,创造一个实现MethodReplacer接口的实现


















































Object为原有方法被调用的那个bean
Method位实例代表要覆写的方法
Objects[]代表传入方法的参数
配置文件:



















我们把fromMessage(String msg)的返回值用一个返回gaoxiang@replacement的方法替换
测试代码:






















































运行结果:
hello world
16
gaoxiang@replacement
3015
如果,不进行类型检查,效率会有一点点提升,如下:
hello world
16
gaoxiang@replacement
2188
使用建议:
1.针对每个方法或每组重载方法使用一个MethodPlacer,避免针对大量无关方法使用一个MethodReplacer
2.不一定非要检查类型检查,如果注重性能,可以给MethodPlacer注入一个boolean开关,支持检查的open/close