[Spring] 스프링 프레임워크의 핵심 기능, 구성 요소, 생명주기 요약 정리
Spring Framework 핵심 기능 (Core Futures)
의존성 주입(Dependency Injection)
- Spring은 IoC(Inversion of control) 컨테이너를 통해 객체 간의 의존성 주입
- 객체간의 결합도를 낮춰 유지보수성과 테스트 용이성 향상
AOP(Aspect-Oriented Programming)
- 관점 지향 프로그래밍을 지원하여 핵심 비지니스 로직과 공통 관심 사항 분리 가능
- Logging, 트랜잭션 관리 등의 관심사 모듈화, 재사용성 향상
트랜잭션 관리
- 선언적인 방식으로 트랜잭션 관리 가능
- @Transactional 어노테이션을 통해 간편하게 트랜잭션 속성 설정 가능
모델-뷰-컨트롤러(MVC) 아키텍처
- Spring MVC를 통해 웹 애플리케이션의 구조 구성 가능
- HTTP 요청과 응답을 처리하는 컨트롤러, 뷰, 모델로 구성
데이터 액세스
- JDBC, ORM 프레임워크를 통해 데이터베이스와의 통합 지원
- 선언적인 방식으로 데이터베이스 트랜잭션 처리 가능
Spring Framework 구성 요소 (Core Components)
컨테이너 (Container)
- IoC 컨테이너는 객체의 생성, 관리, 주입 담당
- Application Context는 빈(Bean)의 생명주기 관리, 설정 정보를 제공
빈 (Bean)
- Spring에서 관리되는 객체
- IoC 컨테이너에 의해 생성, 조립 및 관리
- @Component, @Service, @Repository, @Controller 등의 어노테이션을 사용해 정의
애플리케이션 컨텍스트 (Application Context)
- IoC 컨테이너의 구현체
- 빈의 정의, 생성, 관리, 설정 정보 등 담당
- 환경변수, 시스템 프로퍼티 등을 포함한 외부 설정 로드 가능
AOP 프레임워크
- Aspect를 정의하고 Advice, Pointcut, Joinpoint 등의 개념을 사용하여 관심사 모듈화
- @Aspect 어노테이션을 사용하여 Aspect 정의 가능
트랜잭션 관리자 (Transaction Manger)
- 선언적인 트랜잭션 직원, 트랜잭션의 시작, 커밋, 롤백 등을 관리
- 다양한 데이터 소스에 대한 트랜잭션 제어 가능
Spring Framework 생명 주기 (Lifecycle)
빈의 생명주기
- 빈의 인스턴스화, 초기화, 소멸 등의 생명주기를 IoC 컨테이너가 관리
- InitializingBean, DisposableBean 인터페이스나 @PostConstruct, @PreDestroy 어노테이션을 사용하여 비의 초기화 및 소멸 메서드 지정 가능