2-Layered 아키텍처는 코드의 결합도를 낮추고, 유지보수를 쉽게 하기 위해 설계된 구조이다.
이 아키텍처는 서비스 레이어를 추가하여 프레젠테이션 레이어(Controller)와 데이터 접근 레이어(DAO) 간의 결합도를 낮추는 방식으로 동작한다.
아키텍처의 구성
- 프레젠테이션 레이어 (Controller)
- 사용자의 요청을 받아 적절한 서비스로 전달한다.
- 주로 요청 처리와 응답을 관리하며, 비즈니스 로직을 직접적으로 처리하지 않고 서비스 레이어를 통해 처리한다.
- 서비스 레이어 (Service)
- 비즈니스 로직을 처리하고, DAO를 사용해 데이터베이스와 상호작용한다.
- 주된 역할은 데이터를 가공하고, 트랜잭션 관리 등의 비즈니스 로직을 담당하는 것이다.
주요 특징 및 장점
- 결합도 감소
- Controller와 DAO 사이의 직접적인 의존성을 없애고, Service를 통해 간접적으로 의존하도록 설계하여 결합도를 낮춘다.
- DBMS를 교체하거나 DAO를 수정해야 할 때 Controller를 수정하지 않아도 된다.
- 유지보수 용이
- 코드의 변화가 적은 레이어로 나뉘어 있기 때문에, 변경 사항이 발생해도 전체 시스템에 영향을 주지 않고 필요한 부분만 수정할 수 있다. 예를 들어, DBMS 변경 시에도 Service와 DAO만 수정하면 된다.
스프링 컨테이너와 의존성 주입
- 컨테이너 설정
- /WEB-INF/applicationContext.xml 파일을 통해 루트 컨테이너를 설정하고, 서비스 및 DAO 객체를 스프링 컨테이너에서 관리한다.
- @Service 어노테이션을 사용해 새로운 서비스 인스턴스를 생성하고, 의존성 주입을 통해 Controller에서 이를 호출하여 사용한다.
- 리스너 역할
- 톰캣이 시작되면 리스너가 동작하여 초기 설정을 시행하고, 스프링 컨테이너는 미리 메모리에 서비스 객체를 준비하여 Controller에서 바로 사용할 수 있게 된다.
작동 흐름
- 클라이언트가 요청을 보내면 Controller가 이를 처리하고, 해당 요청을 서비스로 전달한다.
- 서비스는 비즈니스 로직을 수행한 뒤, DAO를 사용해 데이터베이스와 상호작용한다.
- 처리된 결과는 다시 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 |