728x90

OrderRepository 코드
@Slf4j
@Repository
public class OrderRepository {
public String save(String itemId) {
log.info("[orderRepository] 실행");
//저장 로직
if (itemId.equals("ex")) {
throw new IllegalStateException("예외 발생!");
}
return "ok";
}
}
OrderService 코드
@Slf4j
@Service
public class OrderService {
private final OrderRepository orderRepository;
public OrderService(OrderRepository orderRepository) {
this.orderRepository = orderRepository;
}
public void orderItem(String itemId) {
log.info("[orderService] 실행");
orderRepository.save(itemId);
}
}
Test 코드
@Slf4j
@SpringBootTest
public class AopTest {
@Autowired
OrderService orderService;
@Autowired
OrderRepository orderRepository;
@Test
public void aopInfo(){
log.info("isAopProxy, orderService={}", AopUtils.isAopProxy(orderService));
log.info("isAopProxy, orderRepository={}", AopUtils.isAopProxy(orderRepository));
}
@Test
public void success(){
orderService.orderItem("itemA");
}
@Test
public void exception(){
Assertions.assertThatThrownBy(() -> orderService.orderItem("ex"))
.isInstanceOf(IllegalStateException.class);
}
}728x90
'스프링 핵심 원리(고급편)' 카테고리의 다른 글
| Ch10. 스프링 AOP(구현) - 스프링 AOP 구현(포인트컷 분리) (0) | 2022.04.19 |
|---|---|
| Ch10. 스프링 AOP(구현) - 스프링 AOP 구현 (0) | 2022.04.18 |
| Ch09. 스프링 AOP 개념 - AOP 용어 정리 (0) | 2022.04.16 |
| Ch09. 스프링 AOP 개념 - AOP 적용 방식 (0) | 2022.04.16 |
| Ch09. 스프링 AOP 개념 - AOP 소개(애스펙트) (0) | 2022.04.16 |