replace-method
replace-method
定义bean
// 定义原有实体和方法
public class RunMan {
public void say(){
System.out.println("i am rum man");
}
}
// 定义替代方法
public class RunReplacer implements MethodReplacer {
@Override
public Object reimplement(Object o, Method method, Object[] objects) throws Throwable {
System.out.println(o.getClass().getName());
System.out.println(method.getName());
System.out.println("i am replacer");
return null;
}
}
定义xml
<bean id="runMan" class="org.dhcao.relax.spring.replace.RunMan">
<replaced-method name="say" replacer="replacer">
</replaced-method>
</bean>
<bean id="replacer" class="org.dhcao.relax.spring.replace.RunReplacer"></bean>
测试代码
public class Main {
public static ApplicationContext context = null;
public static void main(String[] args) {
context = new ClassPathXmlApplicationContext("spring-context.xml");
replace();
}
public static void replace(){
RunMan run = (RunMan) context.getBean("runMan");
run.say();
}
}
测试结果
org.dhcao.relax.spring.replace.RunMan&&EnhancerBySpringCGLIB&&475def3a
say
i am replacer
凡你能说的,你说清楚。凡你不能说的,留给沉默!