首先,我们可以考虑使用CustomerRegister服务来完成其工作。
@Service
class CustomerRegister {
private final CustomerRegister customerRegister;
CustomerRegister(CustomerRegister customerRegister) {
this.customerRegister = customerRegister;
}
@Transactional
public void create(Customer customer) {
customerRegister.persist(customer);
}
}
后来,我们决定对该注册表操作有一个商业指标。 常见的选择是使用 org.springframework.boot.actuate.metrics.CounterService
请注意:
使用
@Transactional
,Spring动态创建一个代理 实现与您正在注释的类相同的接口
如果我们决定调用
counterService.increment(REGISTY_METRIC);
在create method的范围内,即使在事务回滚中,计数器也会增加。
我的想法是创建一个包含 transactional proxy (包装原始CustomerRegister服务)的方面。然后,@Aspect
组件可以提供使用@AfterReturning(pointcut =
注释的方法
增量度量计数器。
换句话说: