1 spring MethodReplacer 的reimplement是用来替换的,不能通过反射调用方法,否则会陷入死循环
public class CellWrapper implements MethodReplacer{
public Object reimplement(Object obj, Method method, Object[] args) throws Throwable {
System.out.println("替换前");
method.invoke(obj, args);//错误
System.out.println("after replace");
return null;
}
}
2.spring 事件核心代码
public void multicastEvent(final ApplicationEvent event) {
for (final ApplicationListener listener : getApplicationListeners(event)) {
Executor executor = getTaskExecutor();
if (executor != null) {
executor.execute(new Runnable() {
public void run() {
listener.onApplicationEvent(event);
}
});
}
else {
listener.onApplicationEvent(event);
}
}
}
3.spring中的targetSource下的子类HotSwappableTargetSource 适合双数据源的场景
4.spring中的execution可以用来进行拦截,within可以拦截到类级别的joinpoint
5.什么是控制反转?控制:第三方控制具体实现类的具体类型;反转:并非由调用者自身去初始化实现类而是由第三方管理
6. Resource是作为资源的接口存在的,而ResourceLoader是用来获取Resource的,另外classpath* 是指加载不同模块下但包名相同的Resource