본문 바로가기

Framework/Spring

[ Spring ] Business Layer - 스프링 모듈의 비지니스 레이어 알아보기

반응형

스프링 프레임워크에서 비즈니스 레이어(Business Layer)는 애플리케이션의 핵심 로직을 담당하는 계층입니다. 흔히 서비스 계층(Service Layer)이라고도 하며, 사용자의 요청에 따라 필요한 처리를 수행하고, 그 결과를 반환하는 역할을 합니다.

스프링은 비즈니스 로직 자체를 모듈로 제공하지는 않지만, 이 레이어를 구현하고 관리하는 데 유용한 기능들을 제공합니다.


 

1. 비즈니스 레이어의 역할

  • 도메인 로직 처리
    예: 주문 생성, 결제 처리, 회원 가입, 포인트 적립 등
    핵심적인 규칙과 흐름을 처리합니다.
  • 데이터 액세스 계층(DAO/Repository)과의 연계
    DAO나 Repository로부터 데이터를 조회하거나 저장하고, 이를 기반으로 비즈니스 규칙을 적용합니다.
  • 컨트롤러와 DAO 사이의 중간 계층 역할
    컨트롤러는 요청을 받아 적절한 서비스 메서드를 호출하고, 서비스는 결과를 가공하거나 트랜잭션을 포함한 로직을 실행합니다.

 

2. 스프링에서 비즈니스 레이어를 구현할 때 주로 사용하는 기능

 

1. @Service 어노테이션

  • 비즈니스 로직을 구현하는 클래스에 부여합니다.
  • 스프링이 이 클래스를 빈(Bean)으로 등록하고, 컴포넌트 스캔 대상이 되게 합니다.
@Service
public class OrderService {
    public void createOrder(OrderDto dto) {
        // 주문 생성 로직
    }
}

2. 트랜잭션 처리 (@Transactional)

  • 비즈니스 로직은 종종 여러 데이터 작업이 결합되어 있기 때문에 트랜잭션 처리가 필요합니다.
  • 스프링의 @Transactional 어노테이션을 이용하면 선언적으로 트랜잭션을 관리할 수 있습니다.
@Service
@Transactional
public class PaymentService {
    public void processPayment(PaymentDto dto) {
        // 결제 처리 로직
    }
}

3. AOP와의 연계

  • 로깅, 성능 측정, 보안 검사, 예외 처리 등의 공통 기능을 비즈니스 로직과 분리하여 적용할 수 있습니다.
  • 비즈니스 로직은 순수하게 유지되고, AOP를 통해 부가 기능을 삽입할 수 있습니다.

 

3. 구성 예시

@Controller
public class OrderController {
    @Autowired
    private OrderService orderService;

    @PostMapping("/order")
    public String createOrder(OrderDto dto) {
        orderService.createOrder(dto);
        return "redirect:/order/success";
    }
}

@Service
public class OrderService {
    @Autowired
    private OrderRepository orderRepository;

    public void createOrder(OrderDto dto) {
        // 주문 비즈니스 로직
        orderRepository.save(dto.toEntity());
    }
}

정리하자면, 비즈니스 레이어는 스프링 모듈 중에서는 별도의 독립 모듈이 아니라 구조적으로 중요한 위치에 있는 역할 계층이며, 스프링은 이를 효과적으로 만들고 관리할 수 있도록 다양한 어노테이션과 트랜잭션 관리 기능, AOP 기능 등을 제공하고 있습니다.

반응형