먼저 간단히 작업을 수행하는 CustomerRegister 서비스가 있다고 생각해보십시오.원래 @Transaction 주석이 붙은 메소드에서 @AfterReturnin 연산을 제공하는 Aspect를 생성 할 수 있습니까?
@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
를 사용하여, 봄 동적 가 동일한 인터페이스를 구현하는 프록시 (들)을 생성 우리가를 호출하기로 결정하는 경우 클래스 당신은counterService.increment(REGISTY_METRIC);
에 주석하고
생성 방법의 범위 내에서 트랜잭션이 롤백 된 경우에도 카운터가 증가합니다.
내 생각은 랩하는 측면를 만드는 것입니다 transactional proxy (이 포장 원래 CustomerRegister 서비스)가. 그런 다음 @Aspect
구성 요소는 @AfterReturning(pointcut =
이라는 주석이 달린 메소드를 제공 할 수 있습니다. 이는 증분 메트릭 카운터입니다.
다른 단어 :
- 어떻게 다른 측면을 측면을 구현하는 방법?
- aspect over transactional proxy를 구현하는 방법은 무엇입니까?