一、概览
在各大框架中,延迟加载是一种重要的性能优化(cpu 阻塞、计算)手段。
本组件将会支持声明式配置,以及常规el表达式解析。
二、组件设计
1.类图
Lazy -> 注解,用于Field,会修改Feild对应的getter方法
LazyLoaderProxyer -> 实现target对象对应字段懒加载增强功能
LazyLoaderMethodInterceptor -> 懒加载增强逻辑
LazyAnnotationSourcer -> 获取对应@Lazy字段对应Setter方法相关信息
LazyLoader -> 实现加载逻辑
SpringELLazyLoader -> 实现解析spring el表达式的懒加载流程
2.加载流程
3.使用样例
a.实体类
@Data
public class CreateOrderContext{
private CreateOrderCmd cmd;
private User user;
private Product product;
private Stock stock;
private Price price;
@Lazy("#{@promotionClient.getById(cmd.promotionId)}")
private Promotion promotion;
}
b.使用教程
// 创建代理对象
CreateOrderContext proxy = LazyLoaderProxyer.createLazyDataProxyFor(context);
// 获取优惠详情,触发懒加载
Promotion promotionDetail = proxy.getPromotion();