Header Banner
Kakao Logo

TECH.KAKAO.GG

기술 자료/BackEnd/Spring Framework IoC, DI, AOP 알아보기

Spring Framework IoC, DI, AOP 알아보기

BackEnd
👁️ 1582약 1개월 전

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의 도입으로 초기 설정 부담이 줄어들면서 더 많은 개발자들이 사용하고 있습니다.