[Spring]스프링 정리

Intro

스프링 기본 개념 정리

스프링

  1. 자바 기반의 웹 어플리케이션을 만들 수 있는 프레임워크
  2. 동적인 웹사이트 개발을 위해 사용함.

스프링 특징

DI(Dependency Injection) - 의존성 주입

  1. 어떤 객체를 사용하는 주체가 객체를 직접 생성하는 것이 아니라, 객체를 외부에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식.
  2. 객체가 의존성을 개발자가 객체 내부에서 직접 호출(new)하는 대신에, 외부(스프링 컨테이너)에서 객체를 생성해서 넣어주는 방식.
  3. 두 객체 간의 관계를 맺어주는 것을 의존성 주입이라 한다.
    • 예를 들어, Controller가 Service 객체를 사용하고 있는 경우 Service의 메서드가 변경되면 Controller도 수정이 필요하게 되는데, 이를 의존성이 있다고 한다.

AOP(Aspect-Oriented Programming)

  1. AOP(관점 지향 프로그래밍)란, 공통 기능에 관점을 두어 공통적으로 사용되는 기능을 따로 분리하여 재사용하는 기법이다.

IOC(Inversion of Control) - 제어역전

  1. IOC란, 사용자의 제어권을 다른 주체에게 넘기는 것을 말한다.
    1. Java객체를 개발자가 아닌, Spring Container(컨테이너)에 맡긴다.
    2. 개발자에서 프레임워크로 제어의 객체 관리권한이 넘어간 것을 제어역전이라 한다.
  2. 기존 순서 : 객체 생성 → 의존성 객체 생성 → 의존성 객체 메서드 호출
  3. 제어역전 후 순서 : 객체 생성 → 의존성 객체 주입 → 의존성 객체 메서드 호출

결론

💡 스프링이 모든 의존성 객체를 스프링이 실행될 때 다 만들어주고 필요한 곳에 주입시켜 줌으로써, Bean 들은 싱글턴 패턴의 특징을 가지며 제어의 흐름을 스프링에게 맡겨 작업을 처리함.