디스패처 서블릿 (DispatcherServlet)
서블릿 컨테이너에서 HTTP 프로토콜을 통해 들어오는 모든 요청을 제일 앞에서 처리해주는 프론트 컨트롤러.
작동 과정
1. 클라이언트가 요청( Request )을 보냄
2. DispatcherServlet이 요청을 받아 핸들러 매핑을 통해 적절한 컨트롤러를 찾아서 위임
3. 컨트롤러는 비즈니스 로직을 수행한 후, 결과를 뷰( View )에 전달합니다.
4. DispatcherServlet이 뷰( View ) 를 렌더링하여 클라이언트에게 응답합니다.
DI ( Dependency Injection )
스프링 컨테이너가 지원하는 핵심 개념 중 하나로, 설정 파일을 통해 객체간의 의존관계를 설정하는 역할
각 클래스 사이에 필요로 하는 의존관계를 Bean 설정 정보 바탕으로 컨테이너가 자동으로 연결
AOP ( Aspect-Oriented Programming, 관점 지향 프로그래밍 )
공통된 기능(로깅, 트랜잭션 관리 등)을 비즈니스 로직과 분리하여 모듈화함으로써 코드의 중복, 의존 관계의 복잡성 해소
핵심 개념
Aspect : 공통 기능을 모듈화한 것
Advice : 실제로 실행될 기능 (메서드 전후, 예외 발생 시 등)
Pointcut : 공통 기능이 적용될 위치(메서드) 지정
Join Point : Pointcut이 적용될 수 있는 위치(실제 실행 지점)
Weaving : Advice를 핵심 로직코드에 적용하는 것
IoC ( Inversion of Control , 제어의 역전)
"제어의 역전" 이라는 뜻으로 프로그램의 흐름을 개발자가 아닌 프레임워크가 주도하게 된다는 디자인패턴
( 객체를 직접 관리하는 것이 아닌 외부에서 관리하는 것 )
객체의 생성에서 소멸까지 프레임워크가 관리하면서 DI나 AOP가 가능
자바코드로 하는 것이 아니라 객체 생성을 컨테이너가 대신 처리하기 때문에
소스에 의존관계가 표시되지 않으므로 결합도가 낮아짐.
제어의 역전 ( IOC ) 과 의존성 주입 ( DI ) 요약
제어의 역전 = IoC = Inversion of Control
객체를 직접 관리하는 것이 아닌 외부에서 관리하는 것
의존성 주입 = DI = Dependency Injection
Bean : 스프링 컨테이너가 관리하는 객체
Bean 을 스프링 컨테이너로부터 주입 받아 사용 ( 직접 객체를 생성하지 않음 )

DAO ( Data Access Object )
데이터베이스와의 상호작용을 담당하는 객체로, 데이터의 CRUD ( Create, Read, Update, Delete ) 작업을 수행
DTO ( Data Transfer Object )
계층 간 데이터를 주고받을 때 사용되는 객체로, 데이터를 갭슐화하여 전송하는데 사용
Annotation
소스코드에 @어노테이션의 형태로 표현하며 클래스, 필드, 메소드의 선언부에 적용할 수 있는 특정기능이 부여된 표현법
스프링에서 중요한 역할을 하는 메타데이터로, 코드의 동작을 제어하거나 필요한 정보를 제공
주요 어노테이션
@Component, @Service, @Repository : 스프링이 자동으로 관리하는 빈으로 등록.
@Autowired : 의존성 주입.
@Transactional : 트랜잭션 관리.
@RequestMapping : URL 요청과 메서드를 매핑.
Spring JDBC
스프링에서 제공하는 데이터베이스 테이블과, 자바 객체 사이의 단순한 매핑을 간단한 설정을 통해 처리하는 것
기존에는 구현하고 싶은 로직마다 필요한 SQL문이 달랐으며 이에 필요한 Connection, PrepareStatement 등 생성하고
Exception처리도 모두 해야하는 번거러움이 존재했지만,
Spring에서는 JDBC와 ORM 프레임워크를 직접 지원하기 때문에 따로 작성하지 않아도 모두 다 처리해줌.
MyBatis
객체, 데이터베이스, Mapper 자체를 독립적으로 작성하고, DTO에 해당하는 부분과 SQL 실행 결과를 매핑해서
사용할수 있도록 지원함.
기존에는 DAO에 모두 SQL문이 자바 소스상에서 위치했으나 지금은 MyBatis를 통해 SQL은 XML 설정파일로 관리.
장점
설정파일로 분리시, 수정할 때 설정파일만 건드리면 되므로 유지보수성이 좋음
매개변수나 리턴 타입으로 매핑되는 모든 DTO에 관련된 부분도 모두 설정파일에서 작업할 수 있음.
3 Layers Architecture

| 처리 영역 | 프레임워크 | 설명 |
| Presentation | Struts | UI Layer에 중점을 두고 개발된 MVC 프레임워크 |
| Spring ( MVC ) |
Struts와 동일하게 MVC 아키텍처를 제공하는 UI Layer 프레임워크 Struts처럼 독립된 프레임워크는 아니고 Spring 프레임워크에 포함 |
|
| Business | Spring ( IoC, AOP ) |
Spring의 Ioc, AOP 모듈을 이용하여 Spring 컨테이너에서 동작하는 엔터프라이즈 비즈니스 컴포넌트를 개발할 수 있음. |
| Persistence | Hibernate, JPA |
Hibernate는 완벽한 ORM 프레임워크 ORM 프레임워크는 SQL을 프레임워크가 자체적으로 생성하여 DB 연동을 처리 JPA는 Hibernate를 비롯한 모든 ORM의 자바 표준 API |
| iBatis, Mybatis |
iBatis 프레임워크는 개발자가 작성한 SQL명령어와 자바 객체를 매핑해주는 기능을 제공함 MyBatis는 iBatis에서 파생된 프레임워크로서 기본 개념과 문법은 거의 유사함 |
'CS지식' 카테고리의 다른 글
| [Git] Git 동작원리 (3) | 2024.08.28 |
|---|---|
| [SQL] 저장 프로시저 ( Stored Procedure ) (2) | 2024.08.22 |
| [운영체제] 프로세스, 스레드 개념과 차이점 (3) | 2024.08.08 |
| [Java] 데드락 ( DeadLock ) (2) | 2024.08.06 |
| [Java] 가비지 컬렉션 ( Garbage Collection ) 개념 및 동작 (1) | 2024.08.05 |