Spring Framework IoC, DI, AOP 알아보기

KUKJIN LEE • 21시간 전 작성
1. 스프링 프레임워크란?
1.1 탄생 배경과 특징
스프링은 대규모 자바 애플리케이션에서 객체 간의 의존성 관리를 단순화하기 위해 시작되었습니다. 기존 기술 스택의 복잡함을 해소하고자 등장했으며, 다음과 같은 특징이 있습니다.
-
IoC(Inversion of Control) 컨테이너를 통한 객체 생명주기 및 의존성 관리
-
POJO(Plain Old Java Object) 기반 설계로 재사용성과 테스트 용이성 향상
-
모듈화된 구조로 필요한 기능만 선택적으로 사용 가능
✅ 결론: 스프링은 유연성과 생산성을 모두 갖춘 자바 기반 애플리케이션 개발의 표준입니다.
2. 스프링 아키텍처 개요
스프링은 다양한 모듈로 구성된 생태계를 제공합니다. 대표 구성 요소는 다음과 같습니다:
2.1 Core Container
-
BeanFactory
,ApplicationContext
를 통한 Bean 관리 -
의존성 주입(DI), 컴포넌트 스캔, 프로퍼티 설정 등 지원
2.2 AOP (Aspect-Oriented Programming)
-
공통 기능(로깅, 보안, 트랜잭션 등)을 비즈니스 로직과 분리
-
코드의 가독성과 유지보수성을 높임
2.3 Spring MVC
-
Model-View-Controller
패턴 기반 웹 애플리케이션 구조 제공 -
DispatcherServlet
,ViewResolver
등을 통해 라우팅 처리
2.4 Data Access
-
JDBC, JPA, MyBatis 등 다양한 기술을 통합 지원
-
JdbcTemplate
,HibernateTemplate
으로 반복 코드 최소화 -
트랜잭션 처리 기능 내장
3. 스프링의 핵심 개념
3.1 IoC (Inversion of Control)
-
객체의 생성과 관리를 개발자가 아닌 스프링 컨테이너가 담당
-
구조적 유연성과 테스트 용이성 향상
3.2 DI (Dependency Injection)
-
XML, 자바 어노테이션(
@Autowired
,@Inject
) 등을 통해 의존성 주입 -
결합도를 낮추고 유지보수성 향상
3.3 AOP (Aspect-Oriented Programming)
-
횡단 관심사(보안, 로깅 등)를 모듈화하여 비즈니스 로직과 분리
스프링 예제 프로젝트 구조
src
└─ main
└─ java
└─ com.example.demo
├─ DemoApplication.java // 메인 실행 클래스
├─ controller
│ └─ HelloController.java
├─ service
│ └─ HelloService.java
└─ repository
└─ HelloRepository.java
-
Controller: 클라이언트 요청 처리
-
Service: 비즈니스 로직 수행
-
Repository: DB 접근 담당
스프링은 단순한 프레임워크가 아닌, 모듈화된 대규모 생태계입니다. 특히 최근에는 Spring Boot
의 도입으로 초기 설정 부담이 줄어들면서 더 많은 개발자들이 사용하고 있습니다.