[Spring] 2-Layered 아키텍처 정리

2024. 10. 10. 16:09·Spring

2-Layered 아키텍처는 코드의 결합도를 낮추고, 유지보수를 쉽게 하기 위해 설계된 구조이다.

이 아키텍처는 서비스 레이어를 추가하여 프레젠테이션 레이어(Controller)와 데이터 접근 레이어(DAO) 간의 결합도를 낮추는 방식으로 동작한다.

아키텍처의 구성

  • 프레젠테이션 레이어 (Controller)
    • 사용자의 요청을 받아 적절한 서비스로 전달한다.
    • 주로 요청 처리와 응답을 관리하며, 비즈니스 로직을 직접적으로 처리하지 않고 서비스 레이어를 통해 처리한다.
  • 서비스 레이어 (Service)
    • 비즈니스 로직을 처리하고, DAO를 사용해 데이터베이스와 상호작용한다.
    • 주된 역할은 데이터를 가공하고, 트랜잭션 관리 등의 비즈니스 로직을 담당하는 것이다.

주요 특징 및 장점

  • 결합도 감소
    • Controller와 DAO 사이의 직접적인 의존성을 없애고, Service를 통해 간접적으로 의존하도록 설계하여 결합도를 낮춘다.
    • DBMS를 교체하거나 DAO를 수정해야 할 때 Controller를 수정하지 않아도 된다.
  • 유지보수 용이
    • 코드의 변화가 적은 레이어로 나뉘어 있기 때문에, 변경 사항이 발생해도 전체 시스템에 영향을 주지 않고 필요한 부분만 수정할 수 있다. 예를 들어, DBMS 변경 시에도 Service와 DAO만 수정하면 된다.

스프링 컨테이너와 의존성 주입

  • 컨테이너 설정
    • /WEB-INF/applicationContext.xml 파일을 통해 루트 컨테이너를 설정하고, 서비스 및 DAO 객체를 스프링 컨테이너에서 관리한다.
    • @Service 어노테이션을 사용해 새로운 서비스 인스턴스를 생성하고, 의존성 주입을 통해 Controller에서 이를 호출하여 사용한다.
  • 리스너 역할
    • 톰캣이 시작되면 리스너가 동작하여 초기 설정을 시행하고, 스프링 컨테이너는 미리 메모리에 서비스 객체를 준비하여 Controller에서 바로 사용할 수 있게 된다.

작동 흐름

  1. 클라이언트가 요청을 보내면 Controller가 이를 처리하고, 해당 요청을 서비스로 전달한다.
  2. 서비스는 비즈니스 로직을 수행한 뒤, DAO를 사용해 데이터베이스와 상호작용한다.
  3. 처리된 결과는 다시 Controller로 전달되고, 최종 결과가 사용자에게 응답된다.

결론

2-layered 아키텍처는 코드의 결합도를 줄이고, 유지보수를 쉽게 하며, 성능 향상에도 기여하는 구조이다.

Controller와 DAO 간의 결합을 줄이고, 서비스 레이어를 통해 비즈니스 로직을 관리하면서 더 유연한 개발 환경을 제공한다.

'Spring' 카테고리의 다른 글

[Spring] Ajax를 이용한 비동기 처리와 아이디 중복검사 구현  (0) 2024.10.14
[Spring] Tomcat Server 기동 시 Listener와 Spring IoC Container의 초기화 과정  (0) 2024.10.10
[Spring] 스테레오타입 어노테이션과 @RequestMapping  (0) 2024.10.09
[Spring] ViewResolver  (1) 2024.10.09
[Spring] DispatcherServlet과 Spring MVC의 핵심 흐름 분석  (0) 2024.10.07
'Spring' 카테고리의 다른 글
  • [Spring] Ajax를 이용한 비동기 처리와 아이디 중복검사 구현
  • [Spring] Tomcat Server 기동 시 Listener와 Spring IoC Container의 초기화 과정
  • [Spring] 스테레오타입 어노테이션과 @RequestMapping
  • [Spring] ViewResolver
yn98
yn98
좌우명 : 여전할 것 인가, 역전할 것 인가? 백엔드 개발자가 되고싶은 역전하고 있는 개발자 꿈나무의 블로그입니다. 개발을 하면서 공부한 것들을 기록합니다. 24.06 ~
  • yn98
    개발 꿈나무
    yn98
  • 전체
    오늘
    어제
    • 분류 전체보기 (131)
      • Python (3)
      • 공부 (7)
      • DB (7)
      • JAVA (24)
      • JSP (9)
      • jQuery (2)
      • HTML (3)
      • Spring (20)
      • 웹 (4)
      • C (1)
      • Git (2)
      • 에러일기 (19)
      • 프로젝트 (6)
      • 책 (21)
        • 멘토씨리즈 자바 (14)
        • 2024 수제비 정보처리기사 (7)
      • 기타 (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
    • Notion
  • 공지사항

  • 인기 글

  • 태그

    수제비
    정처기 실기
    티스토리챌린지
    정처기
    ViewResolver
    상속
    오버로딩
    정보처리기사
    멘토씨리즈 자바
    DispatcherServlet
    MVC
    생성자
    @repository
    어노테이션
    @service
    html
    codeup 4891 : 행복
    Di
    recoverabledataaccessexception
    정보처리기사 실기
    객체지향
    @Component
    java
    jsp
    aop
    2-layered 아키텍처
    스프링 프레임워크
    오블완
    이벤트 스케줄러
    Spring
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
yn98
[Spring] 2-Layered 아키텍처 정리
상단으로

티스토리툴바