반응형
Spring 단어의 의미
- 스프링 DI 컨테이너 기술(Bean 관리 등)
- 스프링 프레임워크
- 스프링 부트, 스프링 프레임워크 등을 모두 포함한 Spring 생태계
Spring의 핵심 개념
- "자바 언어 기반의 프레임워크"
- 객체지향 언어가 가진 강력한 특징을 살려내는 프레임워크
- 좋은 객체 지향 어플리케이션을 개발할 수 있게 도와주는 프레임워크
Spring 특징
- 자바 객체와 라이브러리들을 관리, Tomcat과 같은 Was가 내장되어 있어 자바 웹 어플리케이션을 구동할 수 있음
- 경량 컨테이너로 자바 객체를 직접 Spring에서 관리
: 객체의 생성및 소멸과 같은 생명주기(Life Cycle)을 관리하며, Spring 컨테이너에서 필요한 객체를 가져와서 사용 - 제어의 역전(IOC, Inversion Of Control)
: 컨트롤의 제어권이 사용자가 아닌, 프레임워크에 있어서 필요에 따라 Spring에서 사용자의 코드를 호출
( Spring에게 제어를 위임하여 Spring이 만든 객체 주입 → 의존성 객체의 메소드 호출 )
이전: 클라이언트 구현 객체가 스스로 필요한 서버 구현 객체를 생성하고, 연결하고, 실행(구현 객체가 제어 흐름을 스스로 조종)
AppConfig 등장 이후 : 구현 객체는 자신의 로직만 실행
OrderServiceImpl
: 인터페이스를 호출하지만, 어떤 구현 객체들이 실행될 지 모름.
AppConfig
: 프로그램에 대한 제어 흐름에 대한 권한을 모두 가지고 있음.
∴ 제어의 역전(IoC) : 프로그램의 제어 흐름을 직접 제어하는 것이 아니라 외부에서 관리하는 것. - 의존성 주입(DI, Dependency Injection)
: 객체를 외부(Spring)에서 생성해서 사용하려는 주체 객체에 주입시켜주는 방식. → 의존성이 줄어듦
- 의존관계 : 정적인 클래스 의존 관계와, 실행 시점에 결정되는 동적인 객체(인스턴스) 의존 관계 둘을 분리해서 생각해야 함
정적인 클래스 의존관계 : 애플리케이션을 실행하지 않아도 분석할 수 O.
동적인 클래스 의존관계 : 애플리케이션 실행 시점에 실제 생성된 객체 인스턴스의 참조가 연결된 의존 관계
→ DI: 실행 시점에 외부에서 실제 구현 객체를 생성, 클라이언트에 전달→클라이언트와 서버의 실제 의존관계가 연결 되는 것
- DI을 사용하면?!
1 ) 클라이언트 코드를 변경하지 않고, 클라이언트가 호출하는 대상의 타입 인스턴스를 변경할 수 O
2 ) 정적인 클래스 의존관계를 변경하지 않고, 동적인 객체 인스턴스 의존관계를 쉽게 변경할 수 O - 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
반응형