스프링(Spring)이란?

김민경·2022년 10월 30일
0

스프링 프레임워크(Spring Framework)

자바(java) 기반의 애플리케이션을 개발하는 데
필요한 기능을 제공하고 쉽게 사용하도록 돕는 도구

스프링 특징

제어 역전(IoC : Inversion of Control)

  • 사용할 객체를 직접 생성하지 않고 객체의 생명주기 관리를 ‘스프링 컨테이너(Spring Container) 또는 IoC 컨테이너(IoC Container)에 위임한다.
  • 객체의 관리를 컨테이너에 맡겨 제어권이 넘어간 것을 제어 역전이라고 부르며, 제어 역전을 통해 의존성 주입(DI), 관전 지향 프로그래밍(AOP)등이 가능해진다.

의존성 주입(DI: Dependency Injection)

  • 사용할 객체를 직접 생성하지 않고 외부 컨테이너가 생성한 객체를 주입받아 사용하는 방식
    • 생성자를 통한 의존성 주입 → 권장(레퍼런스 객체 없이는 객체를 초기화 할 수 없게 설계)
    • 필드 객체 선언을 통한 의존성 주입
    • setter 메서드를 통한 의존성 주입 → 잘 사용하지 않음
  • 스프링에서는 @Autowired라는 어노테션을 통해 의존성 주입을 할 수 있음
    (스프링 4.3 이후 버전은 @Autowired 어노테이션 생략 가능)

관점 짐향 프로그래밍(AOP: Aspect-Oriented Programming)

  • 관점을 기준으로 묶어 개발하는 방식
    → 관점(aspect) : 어떤 기능을 구현할 때 그 기능을 ‘핵심 기능’, ‘부가 기능’으로 구분해 각각 하나의 관점으로 보는 것
    - 핵심기능 : 비즈니스 로직이 처리하려는 목적 기능
    - 부가기능 : 핵심기능인 비즈니스 로직 사이에 로깅, 트랜잭션 등 처리하는 코드를 넣는것

  • 아래의 표는 부가기능인 로직, 트랜잭션 처리 코드가 중복으로 삽입되어 있다. 이런 반복되는 부가 기능을 하나의 공통 로직으로 처리하도록 모듈화해 삽입하는 방식

  • AOP 구현방법

    • 컴파일 과정에 삽입하는 방식
    • 바이트코드를 메모리에 로드하는 과정에 삽입
    • 프락시 패턴을 이용한 방식 → 디자인 패턴 중 하나, 스프링은 이 기능을 통해 AOP 기능을 제공함
  • AOP 의 목적

    • OOP와 마찬가지로 모듈화해서 재사용하고 모듈화한 객체를 편하게 적용
  • 스프링 프레임워크의 다양한 모듈

0개의 댓글