본문 바로가기

전지적라온시점

Spring Framework 개요 및 핵심 개념 완벽 가이드 본문

Development/Spring

Spring Framework 개요 및 핵심 개념 완벽 가이드

최라온 2025. 5. 14. 16:03
728x90
반응형
SMALL

Spring Framework 개요 및 핵심 개념 완벽 가이드

Spring Framework는 Java 기반의 엔터프라이즈 애플리케이션 개발을 위한 오픈소스 프레임워크입니다. IoC(제어의 역전), DI(의존성 주입), AOP(관점 지향 프로그래밍) 등 핵심 철학을 기반으로, 복잡한 애플리케이션을 효율적이고 유연하게 구성할 수 있게 도와줍니다.

1. Spring Framework란?

Spring은 경량(Lightweight)이며 모듈화(Modular)된 프레임워크로, 웹/서버/배치 애플리케이션 개발에 광범위하게 사용됩니다. XML 또는 자바 기반 설정을 통해 컴포넌트 간 의존관계를 효율적으로 관리합니다.

2. 핵심 개념 요약

  • IoC (Inversion of Control): 객체의 생성 및 관리를 개발자가 아닌 컨테이너가 담당
  • DI (Dependency Injection): 객체 간의 의존성을 외부에서 주입
  • AOP (Aspect-Oriented Programming): 로깅, 트랜잭션 같은 공통 관심사를 분리

3. IoC와 DI의 관계

IoC는 객체 제어권을 개발자에서 스프링 컨테이너로 넘기는 개념입니다. DI는 IoC를 구현하는 방식으로, 객체가 필요한 의존 객체를 컨테이너로부터 주입받습니다.

예: 생성자 주입

@Component
public class OrderService {
    private final ProductRepository productRepository;

    @Autowired
    public OrderService(ProductRepository productRepository) {
        this.productRepository = productRepository;
    }
}

4. Bean과 ApplicationContext

  • Bean: Spring 컨테이너가 생성하고 관리하는 객체
  • ApplicationContext: Bean을 생성하고 관리하는 핵심 컨테이너
ApplicationContext context = new AnnotationConfigApplicationContext(AppConfig.class);
OrderService service = context.getBean(OrderService.class);

5. 설정 방식

  • XML 설정: 스프링 초기 방식
  • 자바 기반 설정: @Configuration, @Bean 사용
  • 어노테이션 기반 자동 구성: @Component, @Autowired, @Service 등

예: 자바 기반 설정

@Configuration
public class AppConfig {
    @Bean
    public ProductRepository productRepository() {
        return new ProductRepository();
    }
}

6. AOP (관점 지향 프로그래밍)

AOP는 비즈니스 로직과 무관한 공통 기능(로깅, 트랜잭션 등)을 분리하여 코드 중복을 줄입니다.

@Aspect
@Component
public class LoggingAspect {
    @Before("execution(* com.example.service.*.*(..))")
    public void logBefore() {
        System.out.println("메서드 실행 전 로그 기록");
    }
}

7. 스프링의 장점

  • 객체 간 결합도 최소화 → 테스트 용이
  • 관심사 분리 → 코드 가독성과 유지보수 향상
  • 풍부한 생태계 (Spring Boot, Data, Security, Batch 등)
  • 설정의 유연성 (JavaConfig, Annotation, XML 선택 가능)

8. 결론

Spring Framework는 Java 개발의 표준으로 자리 잡은 프레임워크입니다. IoC, DI, AOP 같은 개념을 바탕으로 유연하고 확장성 높은 애플리케이션 구조를 설계할 수 있으며, 대규모 시스템 개발에서도 생산성과 유지보수성을 극대화할 수 있습니다.

728x90
반응형
LIST