我有几个服务类(CustomerService、AgreementService)。每个方法结果都使用 ehcache 进行缓存。
一些服务方法调用非常昂贵或需要很长时间才能运行。
当我加载例如客户时,我知道接下来很可能需要客户协议。所以我需要将它们加载到后台缓存并使应用程序更加负责。
我试过使用方面。我已将切入点设置为 CustomerService.getById(id) 方法和 @AfterReturning 建议。
@AfterReturning(
pointcut = "execution(* com.example.CustomerService.getById(..))",
returning = "result"
)
public void loadCustomerAgreements(Object result) {
Customer customer = (Customer) result;
// calls method which caches result into ehcache
agreementService.findByCustomer(customer.getId());
}
不幸的是,此解决方案会立即加载客户及其协议(由于响应时间长,这是不可取的)。我想加载客户并返回给用户。然后异步加载协议。
为此,建议@After
效果很好。但是我无法获得客户身份,所以我不知道要加载哪些协议。
有没有办法使用方面或任何 Spring 触发器或其他技术来做到这一点?
感谢您的任何建议。