Java Spring

스프링 Spring 이란? (김영한 로드맵, 스프링 핵심 원리 기본편)

pearl.k 2023. 5. 22. 14:52

1. 스프링 Spring 이란?

하나가 아니라 여러 개의 기술 모음이다. Spring Project 안에 많은 기술, 많은 프로젝트가 포함되어 있으며, 이중에서 가장 중요한 것은 스프링 프레임워크이다.

Spring Project의 다양한 종류 (https://spring.io/projects)

 

2. 스프링 프레임워크

스프링 프레임워크를 구성하는 요소가 많기 때문에 모두 아는 것은 어렵다. 이 중에서 핵심 기술과 웹 기술 위주로 아는 것이 좋다.

핵심 기술  스프링 DI 컨테이너, AOP, 이벤트, 기타
웹 기술  스프링 MVC, 스프링 WebFlux
데이터 접근 기술  트랜잭션, JDBC, ORM 지원, XML 지원
기술 통합  캐시, 이메일, 원격접근, 스케줄링 • 테스트: 스프링 기반 테스트 지원
언어  코틀린, 그루비

최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용한다. 스프링 부트는 스프링을 편리하게 사용할 수 있도록 지원하는 기술이다. (요즘에는 default 로 많이 사용) 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성한다.

 

3. 스프링의 핵심 컨셉

새로운 기술을 배울 때는 다음과 같은 질문에 대해 생각해보자.

"이 기술을 왜 만들었는가?" & "이 기술의 핵심 컨셉은 무엇인가?" 스프링을 공부할 때도 꼭 생각해봐야 하는 주제이다. 그래야 스프링 애플리케이션을 좀 더 효과적으로, 핵심 기술을 잘 사용하여 제작할 수 있을 것이다.

스프링은 Java 기반의 프레임워크로, Java의 가장 핵심적인 특징인 "객체 지향" 기능을 극대화 한다. 즉, Spring == 좋은 객체 지향 애플리케이션을 개발할 수 있도록 돕는 도구라는 뜻이다.

 

4. 좋은 객체 지향 프로그래밍은 뭘까?

객체지향 프로그래밍: 한 프로그램을 객체들의 모임으로 파악한다. 모든 구성 요소가 객체화 되어 있어서 프로그램을 변경하기 쉽고, 유연하다는 장점이 있다. 부품 갈아 끼우듯이 컴포넌트를 수정, 교체 가능 (다형성, 대규모 소프트웨어 개발에 많이 사용됨)

가장 핵심은 "역할과 구현을 명확히 분리" 해서 제작하는 것. 객체 설계 시 인터페이스(역할)를 먼저 만들고, 이 역할을 수행하는 객체를 만든다. (역할이 더 중요하다!)

 

5. 객체 지향 설계의 5가지 원칙 (SOLID) by 로버트 마틴

SRP  단일 책임 원칙(single responsibility principle)
OCP  개방-폐쇄 원칙 (Open/closed principle)
LSP  리스코프 치환 원칙 (Liskov substitution principle)
ISP  인터페이스 분리 원칙 (Interface segregation principle)
DIP  의존관계 역전 원칙 (Dependency inversion principle)