SpringBoot/Spring Basic

[Spring] Spring 이란 ?

myeongju 2022. 2. 5. 00:39
반응형

Spring 단어의 의미

  1. 스프링 DI 컨테이너 기술(Bean 관리 등)
  2. 스프링 프레임워크
  3. 스프링 부트, 스프링 프레임워크 등을 모두 포함한 Spring 생태계

Spring 생태계

 

Spring의 핵심 개념

  • "자바 언어 기반의 프레임워크"
  • 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크
  • 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크

 

 

Spring 특징

  1. 자바 객체와 라이브러리들을 관리, Tomcat과 같은 Was가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있음

  2. 경량 컨테이너로 자바 객체를 직접 Spring에서 관리
    : 객체의 생성및 소멸과 같은 생명주기(Life Cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와서 사용

  3. 제어의 역전(IOC, Inversion Of Control)
    : 컨트롤의 제어권이 사용자가 아닌, 프레임워크에 있어서 필요에 따라 Spring에서 사용자의 코드를 호출
    ( Spring에게 제어를 위임하여 Spring이 만든 객체 주입 → 의존성 객체의 메소드 호출 )

     이전: 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행(구현 객체가 제어 흐름을 스스로 조종)
    AppConfig 등장 이후 : 구현 객체는 자신의 로직만 실행

    OrderServiceImpl
    : 인터페이스를 호출하지만, 어떤 구현 객체들이 실행될 지 모름.

     AppConfig
    : 프로그램에 대한 제어 흐름에 대한 권한을 모두 가지고 있음.


    ∴ 제어의 역전(IoC) : 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것.


  4. 의존성 주입(DI, Dependency Injection)
    : 객체를 외부(Spring)에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식. → 의존성이 줄어듦

      -  의존관계 : 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계 둘을 분리해서 생각해야 함
         정적인 클래스 의존관계 : 애플리케이션을 실행하지 않아도 분석할 수 O.
         동적인 클래스 의존관계 : 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계
          → DI: 실행 시점에 외부에서 실제 구현 객체를 생성, 클라이언트에 전달→클라이언트와 서버의 실제 의존관계가 연결 되는 것

      - DI을 사용하면?!
         1 ) 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 O
         2 ) 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 O

  5. Model - View - Controller 패턴
    : "Spring MVC"라 불리는 모델-뷰-컨트롤러(MVC)패턴을 사용

 

 

Spring Framework

  • 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
  • 웹 기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격접근, 스케줄링
  • 테스트 : 스프링 기반 테스트 지원
  • 언어 : Kotlin, Groovy
  • 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용

 

 

Spring Boot

  • 스프링(Spring)을 더 쉽게 이용하기 위한 도구, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
  • Spring 과 3rd parth(외부) 라이브러리 자동 구성
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
  • 관례에 의한 간결한 설정

 

reference

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

https://goddaehee.tistory.com/156

http://melonicedlatte.com/2021/07/11/174700.html

반응형