Spring 개요

hs·2025년 11월 6일

Spring은 객체의 생성과 의존성 관리를 자동화하여, 유연하고 확장 가능한 애플리케이션을 쉽게 개발할 수 있게 해주는 자바 기반 프레임워크

핵심 개념

IoC (Inversion of Control, 제어의 역전)

  • 객체의 생성과 관리 제어권을 개발자가 아닌 컨테이너가 담당
  • 개발자는 객체 사용에만 집중, 생성/해제는 컨테이너가 수행
  • 결과적으로 결합도가 낮아지고 테스트, 유지보수가 쉬워짐

DI (Dependency Injection, 의존성 주입)

  • 객체 간 필요한 의존 관계를 Spring이 자동으로 연결
  • @Autowired, 생성자 주입 등을 통해 다른 Bean을 주입받음
    → 결합도 감소, 유연한 구조, 테스트 용이

AOP (Aspect Oriented Programming, 관점 지향 프로그래밍)

  • 공통 기능(로깅, 보안, 트랜잭션 등)을 비즈니스 로직과 분리
  • 프록시 기반으로 실행 시점에 기능을 자동으로 삽입
    → 핵심 로직과 부가 로직을 명확히 분리

IoC 컨테이너 (ApplicationContext)

Spring에서 Bean을 생성, 관리, 주입, 소멸까지 담당하는 객체 관리 엔진

주요 역할

역할설명
Bean 등록설정 정보(@Configuration, @ComponentScan 등)을 읽어 Bean 정의 등록
Bean 생성new 연산 대신 컨테이너가 객체 생성
의존성 주입@Autowired 등으로 Bean 간 연결
생명주기 관리생성 → 주입 → 초기화 → 소멸
AOP 적용트랜잭션, 로깅 등 공통 기능 자동 주입

메모리 누수 방지, 일관된 자원 관리, 수명 주기 제어 용이

Bean (빈)

스프링 IoC 컨테이너에 의해 관리되는 객체
*Spring에서 관리받지 않는 일반 객체(new로 생성된)는 Bean이 아님.

Bean 등록 방법

방법설명
@Component기본적인 자동 등록
@Service, @Repository, @Controller역할 구분을 위한 특화된 Component
@Configuration + @Bean수동 등록 (직접 인스턴스 반환)
@Configuration
public class AppConfig {
    @Bean
    public MemberService memberService() {
        return new MemberService(memberRepository());
    }

    @Bean
    public MemberRepository memberRepository() {
        return new MemberRepository();
    }
}

Bean 의존성 주입 방식

방식특징
생성자 주입 (권장)불변성 보장, 테스트 용이
필드 주입간단하지만 테스트 어려움
Setter 주입선택적 의존성 주입 가능

Bean 스코프

스코프설명
singleton컨테이너 내 하나의 인스턴스 (기본값)
prototype요청마다 새 객체 생성
requestHTTP 요청 단위 (웹)
session세션 단위 (웹)

Bean 생명주기

생성 → 의존성 주입 → 초기화(@PostConstruct) → 사용 → 소멸(@PreDestroy)
profile
sh

0개의 댓글