@Slf4j
@RestController
public class OrderControllerV3 {
private final OrderServiceV3 orderService;
public OrderControllerV3(OrderServiceV3 orderService) {
this.orderService = orderService;
}
@GetMapping("/v3/request")
public String request(String itemId) {
orderService.orderItem(itemId);
return "ok";
}
@GetMapping("/v3/no-log")
public String noLog() {
return "ok";
}
}
@Service
public class OrderServiceV3 {
private final OrderRepositoryV3 orderRepository;
public OrderServiceV3(OrderRepositoryV3 orderRepository) {
this.orderRepository = orderRepository;
}
public void orderItem(String itemId) {
orderRepository.save(itemId);
}
}
@Repository
public class OrderRepositoryV3 {
public void save(String itemId) {
if(itemId.equals("ex")){
throw new IllegalStateException("예외 발생!");
}
sleep(1000);
}
private void sleep(int millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
요구사항
비즈니스 로직만 남겨두고 로그 기능을 추가 해보자.
이걸 위해선 프록시 개념이 필요함.
'스프링 > 스프링 핵심 원리 - 고급편' 카테고리의 다른 글
29. 프록시 패턴 (0) | 2024.01.19 |
---|---|
28. 프록시 패턴과 데코레이션 패턴 (0) | 2024.01.19 |
26. 컨트롤러 인터페이스 및 수동 빈 등록 (0) | 2024.01.19 |
25. 템플릿 콜백 패턴 적용 (0) | 2024.01.17 |
24. 템플릿 콜백 패턴 (0) | 2024.01.17 |