[Spring] Spring Core module

Na young·2024년 1월 31일

Spring

목록 보기
3/4

스프링 핵심 패러다임


이미지출처

IoC와 DI

프로그램 구조를 변경하는 디자인 패턴 중 하나
객체 간의 의존성을 줄이고 결합도를 느슨하게 만들기 위해 사용

IoC (Inversion of Control)
개발자가 아닌 프레임워크가 객체의 생성과 관리를 수행하기 때문에 개발자는 객체를 사용하기 위해 필요한 인터페이스를 정의하는 것에 집중할 수 있다. 소프트웨어의 유연성과 확장성을 향상시키는 중요한 개념으로, 객체지향에서 필수적인 디자인 패턴 중 하나이다.

DI (Dependency Injection)
객체 간의 의존성을 관리하는 방식으로, 객체를 직접 생성하지 않고 외부에서 생성한 후 객체에 주입하는 방식입니다. 따라서 객체 간의 결합도를 낮추고 유연한 프로그램 구조를 만들 수 있습니다.

  • IoC : 객체를 생성하고 객체 간의 의존성을 해결하기 위해 인터페이스를 이용한 DI 수행

  • Spring 프레임워크 : IoC 컨테이너를 통해 객체의 생성과 관리
    개발자는 스프링 컨테이너에 필요한 객체들을 등록하고, 필요한 객체를 요청하여 사용할 수 있다.
    스프링 컨테이너는 객체의 생성, 의존성 주입, 초기화, 소멸 등의 관리를 수행한다.


Spring Core

Spring core 모듈
스프링 프레임워크의 기본적인 기능을 담당하는 모듈 중 하나
IoC 컨테이너와 DI 컨테이너를 제공하여 객체지향적 설계 촉진
애플리케이션의 유연성과 확장성을 향상시키는데에 중점

1. IoC (Inversion of Control) 컨테이너

  • 객체 생성 / 관리
  • 빈(Bean) 객체 생성 -> 의존성 주입(DI) 수행
  • 빈의 생명주기 관리
  • XML, 애노테이션, 자바 설정 파일을 사용하여 빈의 구성 정의 가능

2. DI (Dependency Injection) 컨테이너

  • 빈(Bean) 객체 간의 의존성 관리
  • 런타임 시, 빈들의 의존성 주입
  • 인터페이스와 구현체 간의 느슨한 결합 유도
  • 생성자 주입(Constructor Injection), Setter 주입(Setter Injection) 등 다양한 방법 제공

3. AOP (Aspect Oriented Programming)

  • Aspect-Oriented Programming 지원
  • 메서드 호출 전/후 등 특정 시점에서 공통적인 로직 수행 유도
  • 애노테이션을 활용하여 AOP 구현 간편화

4. 유틸리티 클래스 및 기능

  • 스프링 프레임워크에서 자주 사용되는 유틸리티 클래스들 제공
  • 프로퍼티 파일을 읽어들이는 등의 기능 지원

Spring Core 모듈 주요 아노테이션

  • @Component: 스프링의 컴포넌트 스캔 기능을 사용하여 빈으로 등록하고자 하는 클래스 사용

  • @Autowired: 자동 주입을 위한 아노테이션. 스프링 컨테이너가 해당 타입에 맞는 빈을 자동으로 주입

  • @Qualifier: 여러 개의 빈이 등록되어 있을 때, 어떤 빈을 주입할 지 선택하기 위한 아노테이션

  • @Controller: 스프링 MVC에서 컨트롤러 역할을 하는 클래스에 사용

  • @Service: 비즈니스 로직을 처리하는 서비스 클래스에 사용

  • @Repository: 데이터베이스와 관련된 작업을 처리하는 DAO 클래스에 사용

  • @Configuration: 자바 기반의 스프링 설정 클래스에 사용

  • @Bean: @Configuration 클래스에서 스프링 빈을 직접 등록하기 위한 아노테이션

  • @Scope: 빈의 범위를 지정하기 위한 아노테이션으로, singleton, prototype, request, session, global session 등이 있다

  • @Value: 프로퍼티 값을 주입하기 위한 아노테이션으로, 스프링의 PropertyPlaceholderConfigurer를 통해 값을 가져올 수 있다

profile
개발어린이

0개의 댓글