IoC 컨테이너 (Inversion of Control Container)
- 핵심 개념: IoC 컨테이너는 객체의 생성과 생명 주기(라이프사이클)를 관리합니다. 개발자가 직접 객체를 생성하고 의존성을 주입하는 대신, 컨테이너가 이를 대신 처리합니다.
- 작동 방식:
- 개발자는 객체의 생성 방식을 컨테이너에 설정(XML, Java Config, Annotation 등).
- 컨테이너는 애플리케이션 실행 시 필요한 객체를 생성하고 의존성을 자동으로 주입(Dependency Injection).
- 주요 특징:
- 객체 간의 강한 결합을 줄여 유연한 설계 가능.
- 설정 파일 또는 애너테이션(@Component, @Bean 등)을 통해 구성.
- 중요한 클래스/인터페이스:
ApplicationContext
BeanFactory
AOP (Aspect-Oriented Programming)
- 핵심 개념: 횡단 관심사(Cross-Cutting Concern)를 분리하여 코드의 중복을 줄이고 모듈화를 극대화하는 기법입니다. 예를 들어, 로깅, 트랜잭션 관리, 보안 같은 기능은 핵심 로직과 분리해 관리.
- 작동 방식:
- 핵심 로직(비즈니스 로직) 주변에 특정 동작(Aspect)을 삽입.
- 주로 프록시 패턴을 활용하여 메서드 호출 전후에 동작을 추가.
- 주요 개념:
- Aspect: 횡단 관심사 자체.
- Advice: 실행할 로직(전처리, 후처리 등).
- Join Point: 실행 가능한 지점(메서드 호출 등).
- Pointcut: Advice를 적용할 구체적인 조건.
- 활용 예시:
- 트랜잭션 관리.
- 메서드 실행 시간 측정.
- 보안 체크.
추상화 계층 (Spring의 다양한 API 계층)
스프링은 다양한 기술을 쉽게 사용할 수 있도록 추상화 계층을 제공합니다. 아래는 주요 추상화 계층의 요약입니다.
a. MVC (Model-View-Controller)
- 스프링 MVC는 웹 애플리케이션 개발을 위한 구조화된 패턴.
- Model: 데이터와 비즈니스 로직 처리.
- View: 사용자에게 표시할 화면 (JSP, Thymeleaf 등).
- Controller: 사용자 요청을 처리하고 Model과 View를 연결.
b. JDBC 추상화
- 복잡한 데이터베이스 처리 코드를 간소화.
- Connection, Statement, ResultSet 등을 자동으로 관리.
- 템플릿 클래스 제공:
JdbcTemplate.
c. Resource 추상화
- 파일, URL, 클래스패스 등 다양한 리소스를 동일한 방식으로 처리.
Resource 인터페이스를 사용하여 일관된 접근 방식 제공.
d. O/X M (Object/XML Mapping)
- 자바 객체와 XML 데이터를 매핑.
- JAXB, Castor 등 지원.
e. O/J M (Object/JSON Mapping)
- 자바 객체와 JSON 데이터를 매핑.
- Jackson, Gson 같은 라이브러리와 통합.
| IoC 컨테이너 | 객체 생성 및 의존성 관리 | ApplicationContext, DI, @Bean, @Component |
|---|
| AOP | 횡단 관심사의 분리 | Aspect, Advice, Pointcut, 프록시 패턴 활용 |
|---|
| 추상화 계층 | 다양한 기술 사용을 간소화 | MVC, JdbcTemplate, Resource, O/X M, O/J M 등 |
|---|