스프링 프레임워크란스프링 DI스프링 IoC 개념AOP란 무엇인가backend

Spring Framework IoC, DI, AOP 알아보기

KUKJIN LEE
KUKJIN LEE
2025년 4월 3일
1746

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

관련 글

[SQL 입문] 필요한 데이터만 콕 집어 가져올 수 있는 WHERE 절

사용자는 테이블에 있는 모든 데이터를 다 보고 싶어 하지는 않습니다. 오히려 특정 항목에 대한 데이터만 가져오고 싶을 때가 훨씬 많습니다. 예를 들어, 어떤 사용자의 이메일이나 ID는 알고 있는데, 그 사람이 언제 우리 앱에 가입했는지 확인하고 싶다고 가정해 봅시다...

2026년 1월 27일10

SQL에서 SELECT란 무엇인가?

데이터베이스를 거대한 서류 보관함이라고 생각하면 됩니다. 보관함 안에는 수많은 데이터가 차곡차곡 쌓입니다. SELECT는 이 보관함에서 "내가 원하는 정보를 찾아줘!"라고 요청하는 명령어입니다. 이 과정을 전문 용어로 '쿼리(Query)'라고 부릅니다. &nbs...

2026년 1월 26일10

[SQL 기초] "언제 하나씩 다 넣어?" 데이터 한 번에 넣기

개발을 하다 보면 데이터베이스(DB)에 샘플 데이터를 대량으로 넣어야 할 때가 있습니다. 메뉴 100개를 추가해야 하는데 INSERT 문을 100번 쓰고 있다면? 너무 비효율적이죠! 오늘은 SQL에서 여러 데이터를 한 번에 넣는 '다중 삽입(Multiple Inse...

2026년 1월 21일13

SQL 데이터 삽입하기

데이터가 없는 데이터베이스는 연료 없는 로켓과 같습니다. 이제 'Missions' 테이블에 새로운 행(row)을 추가하는 방법을 알아보겠습니다. "삽입(Inserting)"은 '데이터 추가'를 의미합니다. 기존 Missions 테이블 ...

2026년 1월 20일12