[웹] Spring

코드와이 2021. 4. 27. 00:30

 

Spring?

애플리케이션을 만들기 위한 모든 기능을 종합적으로 제공하는 경량화 된 솔루션이다.

 

Enterprise Application 개발 시 복잡함을 해결하는 Spring의 핵심

  1. POJO : 객체지향의 원리에 충실한 객체
  2. PSA : 기술에 접근할 수 있도록 해주는 설계 원칙
  3. IoC/DI : DI는 유연하게 확장 가능한 객체를 만들어 두고 객체 간의 의존관계는 외부에서 다이나믹하게 설정
  4. AOP : 공통 모듈을 여러 코드에 쉽게 적용 가능

 

IoC

  1. Dependency Lookup
    • 컨테이너가 lookup context를 통해서 필요한 resource나 object를 얻는 방식이다.
  2. Dependency Injection
    • Object에 lookup 코드를 사용하지 않고 컨테이너가 직접 의존 구조를 Object에 설정할 수 있도록 지정해주는 방식이다.
  3. 객체 간의 강한 결합을 통해 Assembler를 통해 결합도를 낮춘다

Container

    - 객체의 생성, 사용, 소멸에 해당하는 라이프사이클을 담당한다.

    - 서비스 객체를 사용하기 위해 각각 Factory or Singleton 패턴을 직접 구현하지 않아도 된다

 

DI

  1. Bean
    • 스프링이 IoC 방식으로 관리하는 오브젝트를 말한다.
  2. BeanFactory
    • 스프링이 IoC 를 담당하는 핵심 컨테이너
    • Bean 을 등록, 생성, 조회, 반환하는 기능을 담당한다.
  3. ApplicationContext
    • BeanFactory를 확장한 IoC 컨테이너이다.
    • Bean 을 등록하고 관리하는 기본적인 기능은 BeanFactory 와 동일하다.