본문 바로가기
공부/Spring

[Spring] Spring Framework 정리

by 맴썰 2022. 2. 21.
  • Spring Framework란?

     ->Spring Framework은 엔터프라이즈 애플리케이션 개발의 복잡함을 겨냥해 만들어진 오픈 소스 프레임워크이다.

     궁극적인 목적은 Java 개발의 간소화이다.

 

 

 

  - Java 개발 간소화를 위한 4가지 전략

  •  POJO(Plain-Old Java Object)를 이용한 가볍고 비 침투적인 개발 
    • POJO는 주요한 Java Object 모델이나 프레임워크 등에 종속적이지 않은, 따르지 않는 Java Object이다. 
      • 미리 지정된 클래스를 extends 하면 안된다.
      • 미리 정의된 인터페이스를 implement 하면 안된다.
      • 미리 정의된 Annotation을 포함하면 안된다.
  •  DI(Dependency Injection)와 인터페이스 지향을 통한 느슨한 결합도
    • DI(종속성 주입, 종속객체 주입) : 각 객체를 조율하는 제 3자에 의해 생성 시점에 종속 객체를 부여
      • 객체는 종속객체를 생성하거나 얻지 않고 종속객체는 종속객체가 필요한 객체에 주입된다. 
      • 특정 구현체에 결합되지 않아 느슨한 결합도(Loose Coupling)를 가질 수 있다.
      • 어떤 객체가 자신이 필요로 하는 종속객체를 인터페이스를 통해서만 알고 있다면 사용하는 객체 입장에서는 아무런 변경 없이 종속객체를 다른 구현체로 바꿀 수 있다.
  • 에스펙트와 공통 규약을 통한 선언적 프로그래밍(AOP)
    • 소프트웨어 시스템 내부의 컴포넌트 중 로깅, 트랜잭션 관리, 보안 등 애플리케이션 전체에 걸쳐 사용되는 기능을 재사용할 수 있는 컴포넌트로 담을 수 있게 해준다.
    • AOP를 사용하면 각 모듈들은 자기 본연의 기능에 충실할 수 있게 되고 전체에 걸쳐 사용되는 기술들은 해당 기능들을 여러 겹으로 덮는 방식으로 구현할 수 있으므로 핵심 기능 모듈에는 변화를 주지 않고 선언적으로 추가적인 기능을 적용할 수 있다.
  • 에스펙트와 템플릿을 통한 상투적인 코드 축소 

- Spring Container 

  • Spring Application에는 Spring Container에서 객체가 태어나고 서로 엮이며 소멸한다. 즉 이들의 전체 생명 주기를 관리한다.
  • Spring Container는 DI를 이용해 컴포넌트를 관리하고 컴포넌트 간 연관관계 형성도 담당한다. 따라서 이러한 일을 수행할 필요가 없어진 객체들은 재사용성이 올라가고 단위테스트가 용이해진다.
  • 스프링 컨테이너의 분류
    • 빈 팩토리 : DI에 대한 기본적인 지원을 제공하는 가장 단순한 컨테이너
      • 빈(Bean)이란?
        • 스프링 컨테이너에서 관리하는 자바 객체
        • new를 입력하여 직접 생성하는 객체가 아닌, Spring에 의해 생성되고 관리되는 객체를 뜻함
    • 애플리케이션 컨텍스트
      • 빈 팩토리를 확장해 property file에 텍스트 메세지를 읽고 해당 이벤트 리스너에 대한 애플리케이션 이벤트 발행과 같은 애플리케이션 프레임워크 서비스를 제공하는 컨테이너
      • 빈 팩토리는 대부분의 애플리케이션에 대해 지나치게 저수준의 기능을 제공해 이를 더 선호한다.