computer_study

[Spring] 15. 간단한 웹 어플리케이션의 구조 본문

스터디/스프링5 프로그래밍 입문

[Spring] 15. 간단한 웹 어플리케이션의 구조

knowable 2022. 5. 29. 01:13

1. 간단한 웹 어플리케이션의 구성 요소

  • 프론트 서블릿
    • 웹 브라우저의 모든 요청을 받는 창구 역할
    • 요청을 알맞는 컨트롤러에 전달한다 (DispatcherServlet)
  • 컨트롤러 + 뷰
    • 컨트롤러가 실제 웹 브라우저의 요청을 처리
      • 클라이언트가 요구한 기능 실행
      • 응답 결과 생성에 필요한 모델 생성
      • 결과를 생성할 뷰 선택
    • 기능 제공을 위한 로직은 직접 수행하진 않는다.(로직을 제공하는 서비스에 처리를 위임)
  • 서비스
    • 기능의 로직 구현
  • DAO(Data Acces Object)
    • DB연동이 필요할 때 사용

DTO(Data Transfer Object)

  • 데이터 저장 담당 클래스. Controller, Service, View처럼 계층 간의 데이터 교환을 위해 사용. 로직을 갖고 있지 않으며 순수한 데이터 객체이며 getter, setter 메소드만을 갖고 있다.

BO(Business Object)

  • 비즈니스 로직을 가지고있고, getter기능만을 포함한다

 

2. 서비스의 구현

  • 기능별로 서비스 클래스를 작성하는 것이 코드 길이를 일정수준 안에서 유지할 수 있다.
  • 여러 파라미터를 class가 전달받는 것 보다 데이터를 전달받기 위한 타입을 만들면, 스프링 MVC의 커맨드 객체로 해당 타입을 사용할 수 있어 편하다.
  • 서비스 메서드의 기능 실행 후 결과 전달
    • 리턴 값을 이용한 정상 결과
    • 익셉션을 이용한 비정상 결과

 

3. 컨트롤러에서의 DAO접근

로직의 수행 없이 DAO에 접근해도 괜찮다.

public class MemberService{
    ...
    public Member getMember(Long id){
        return memberDao.selectById(id);
    }
}
//////////////////
@RequestMapping("/member/detail/{id}")
public String detail(@PathVariable("id") Long id, Model model){
    Member member = memberService.getMember(id); // DAO를 직접 호출하는 것과 같다.
    ...
}

컨트롤러는 서비스를 사용해야 한다는 압박에서 벗어나 DAO에 직접 접근해도 큰 틀에서 웹 어플리케이션의 계층 구조를 유지할 수 있다

 

4. 패키지 구성

각 팀에 따라 패키지 구성이 다르다.(정답이 없다)

 

 

Comments