본문 바로가기
Web/spring study

[Spring] 스프링이란?

by 장인이 2022. 4. 19.

1. 스프링 구성 요소?

- 스프링은 하나의 기술이 아닌, 여러가지 기술로 나누어져 있다.

 

- 필수

- 스프링 프레임워크: 스프링의 기본

- 스프링 부트: 스프링 설정을 쉽게 해주는 장치

 

- 선택

- 스프링 데이터: 데이터(CRUD)를 쉽게 관리할 수 있는 장치, JPA를 많이 씀

- 스프링 세션: 세션 기능을 편하게 사용할 수 있도록 함

- 스프링 시큐리티: 보안 관련

- 스프링 Rest Docs: 스프링의 api를 문서화 시켜 편하게 볼 수 있도록 함

- 스프링 배치: 다량의 데이터중 일부를 가져오고 저장하는 기술이 배치, 이를 스프링 특화되게 함

 

*이 외에도 많은 기술들이 있다.(링크 참고)

https://spring.io/projects

 

Spring | Projects

Spring Framework Provides core support for dependency injection, transaction management, web apps, data access, messaging, and more.

spring.io

 

2. 스프링 프레임워크

- 결국 가장 중요한 기술은 "스프링 프레임워크"이다.

 

- 핵심 기술, 웹 기술, 데이터 접근 기술, 기술 통합, 테스트, 언어, 이 모든 것들을 포함하는 기능

- 우선 핵심 기술(스프링 DI 컨테이너, AOP, 이벤트, 기타)부분들을 공부하기

: 기타 기술들은 이곳에서 파생됨, 나머지는 차례차례 배우기

 

3. 스프링 부트

스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용된다.

 

- 왜 쓸까? -> 여러 편리한 기능이 있기 때문에!

- Tomcat같은 웹 서버를 내장할 필요 없이, 스프링 애플리케이션을 생성 가능하다.

- 손쉬운 빌드 구성을 위한 starter 종속성 제공

   : 스프링으로 환경을 구성하려면 많은 종속을 해주어야 했음

   : 이제는 하나만 종속해주면 됨

- 스프링과 외부 라이브러리 자동 구성

   : 예전에는 외부 라이브러리와의 버전 관리가 어려웠음

   : 이를 스프링부트가 단번에 해결해줌(고민할 필요X)

- 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공

   : 모니터링 하는 것이 중요, 이를 부트가 제공해줌

- 간결한 설정

   : 기본적인 내용은 알아서 설정해줌

   : 몇몇 필요한 부분만 커스텀해주면 된다.

 

- 즉, 스프링 부트는 스프링 프레임워크, 그리고 나머지 기능들을 쉽게 사용할 수 있도록 도와주는 역할을 한다.

 

4. 스프링이라는 단어는 무엇인가?

- 상당히 애매하다.

 

- 문맥에 따라 다르게 사용됨

- 스프링 DI 컨테이너 기술

- 스프링 프레임워크..

- 최근은 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계를 의미하는듯

 

5. 스프링은 왜 만들었는가?

- 이 기술을 왜 만들었는가?

- 이 기술의 핵심 컨셉은?

: 이 2가지 내용이 가장 중요, 이에 따라 프레임워크의 확장성, 사용성이 달라진다.

 

- 어떻게 만들었길래 스프링이라는 프레임워크가 이렇게 유명해졌을까?

- 사실 스프링의 본질을 알아야, 진정으로 잘한다고 할 수 있음

 

- 웹 애플리케이션 만들고, DB 접근 편하게 하는 기술인가?

- 클라우드, 마이크로 서비스인가?

 

- 위 내용들은 모두 결과물이다!

 

- 스프링은 자바 언어 기반의 프레임워크, 자바언어의 가장 큰 특징은 "객체 지향 언어"이다.

- 따라서 스프링은 객체 지향 언어가 가진 강력한 특징을 살려내는 프레임워크이다.

   : 왜 사람들이 열광했을까?

   : 기존의 방법을 사용하면, 객체지향이 가진 장점들을 모두 잃어버리고,

   : 그저 상속받으면서 코딩하는 더러운 방법이었음

- 스프링은 "좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크"

 

- 어떤 사람들은 스프링을 사용할 시 불편하고, 스프링에 종속되어 코딩할 수 밖에 없다고 불평하는데,

- 이는 스프링의 기능만 사용하고, 스프링을 제대로 이해하지 못한 사람이라고 한다.

 

- 그러면 여기서 질문이 하나 생긴다.

- 좋은 객체 지향 애플리케이션이란 무엇인가?

 

- 이에 대해서는 다음 게시글에 이어서 작성해볼 예정이다.


위 내용은 김영한 님의 인프런 강의 "스프링 핵심 원리 - 기본편"의 내용과 강의자료를 토대로 작성된 게시글입니다.

강의 링크:

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

댓글