개요
- 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크로 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와준다.
기술 개요
스프링 핵심 기술
- 스프링 DI 컨테이너
- AOP
- 이벤트
- ...
웹 기술
- 스프링 MVC
- 스프링 WebFlux
데이터 접근 기술
- 트랜잭션
- JDBC
- ORM 지원
- XML 지원
기술 통합
- 캐시
- 이메일
- 원격 접근
- 스케줄링
- 테스트
- 스프링 기반 테스트 지원
언어
- Kotlin
- Groupby
핵심 개념
IoC(Inversion of Control)
- 스프링에서는 IoC 컨테이너가 객체의 생성, 초기화, 서비스 소멸에 관한 모든 권한을 가지면서 객체의 생명주기를 관리하는데 이것을 개발의 제어권이 개발자가 아닌 프레임워크에 있다하여 제어의 역전(IoC)라고 한다.
DI (Dependency Injection)
- 의존성 주입이란 IoC 컨테이너에서 빈 객체를 생성하는 방식을 말한다. 의존적인 객체를 직접 생성 또는 제어하는 것이 아니라 특정 객체가 필요하다면 객체를 외부에서 가져다가 주입하는 방식이다.
- 이렇게 객체를 외부에서 가져다가 쓰기 때문에 클래스에서 new 연산자를 사용하지 않아도 된다.
- 스프링 컨테이너에서 각 객체를 생성할 때는 단 한번만 실행되는데 이를 Singleton이라고 바꿔 말할 수 있다.
AOP (Aspect Oriented Programing)
- 관점 지향 프로그래밍(관심사 중심 프로그래핑)은 어떤 로직을 기준으로 핵심적인 관점, 부가적인 관점(로깅이나 보안, 트랜잭션 같은 공통 기능 로직)으로 나누어서 보고 그 관점을 기준으로 각각 모듈화하고 핵심적인 비즈니스 로직에서 분리하여 재사용하는 것을 말한다.
- 여러 메서드에서 공통적으로 해야하는 작업의 코드가 중복되는 경우에 프록시 패턴을 기반으로 인터페이스를 사용하고 implements로 구현한다.
스프링 부트
스프링 부트를 통해 스프링 프레임워크의 기술들을 편리하게 사용할 수 있으며 주요 특징은 아래와 같다.
- 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성할 수 있다.
- Tomcat 같은 웹 서버를 내장하고 있어 별도의 웹 서버를 설치하지 않아도 된다.
- 손쉬운 빌드 구성을 위한 starter 종속성을 제공한다.
- 스프링과 써드파티(외부) 라이브러리를 자동으로 구성해준다.
- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능(모니터링 등)을 제공한다.
- 관례에 의한 간결한 설정이 가능하다.(디폴트 설정 기준으로 커스터마이징하기 편함)
'Spring' 카테고리의 다른 글
Practice2. 주문과 할인 도메인 설계 (0) | 2022.08.06 |
---|---|
Practice1. 도메인 설계 (0) | 2022.08.06 |
객체 지향 설계와 스프링 (0) | 2022.07.15 |