尝试将 CGLIB 与回调过滤器(在数万个对象上)一起使用时,我注意到速度很糟糕,但我找不到任何有关优化 CGLIB 的信息。
对于搜索/列表界面,系统正在从优化查询中加载多个属性,并使用这些属性填充域树。对于所有其他属性,LazyLoader 正在加载完整的对象。这个想法是让搜索/列表使用的基本属性加载,同时不丢失域模型类。
基本示例
String name = rst.getString(1);
Enhancer enhancer = new Enchancer();
enhancer.setSuperclass(Type.class);
enhancer.setCallbackFilter(new CallbackFilter(){
public int method(Method method){
if("getName".equals(method.getName()){
return 1;
}
return 0;
}
});
enhancer.setCallbacks(new Callback[]{
new LazyLoader(){...}
new FixedValueImpl(name);
});
return (Type)enhancer.create()