Kim-Baek 개발자 이야기

[스프링 핵심원리] 2. 스프링이란? 본문

개발/Spring

[스프링 핵심원리] 2. 스프링이란?

김백개발자 2021. 9. 22. 03:13
김영한님의 [스프링 핵심 원리] 강의를 정리하고, 내가 생각한 내용까지 정리하는 포스팅

이전 글에서 스프링이 나오기 전 어떤 역사가 있었는 지를 알아봤다. 그렇다면 이제 스프링이 어떤 것인지 알아볼 차례인 것 같다. 스프링은 지금 하나의 오픈소스 프로젝트를 말하는 것이 아니다. 되게 다양한 프로젝트들이 모여서 스프링이라는 것을 구성하고 있다고 볼 수 있다.

https://spring.io/projects 에 들어가보면 스프링을 구성하는 프로젝트들이 나열되어 있다. 그 중에서 스프링 부트와 스프링 프레임워크가 필수적으로 사용되는 프로젝트이다.

그리고 수 많은 프로젝트들이 더 많이 있다. 프로젝트 이름을 보면 어떤 기능을 제공하는 것인지 대충 유추가 가능한데, 스프링 클라우드는 클라우드 환경에 맞는 기능을 제공하는 프로젝트이고, 스프링 시큐리티는 인증/인가 기능을 제공하는 프로젝트이다. 

이러한 프로젝트들은 필수가 아니고 선택이기 때문에 나중에 어떤 기능이 필요하다 싶으면 여기서 보고 찾아서 사용하면 된다. 

스프링 프레임워크

먼저 필수라고 했던 스프링 프레임워크는 위와 같은 기능을 제공한다. 현재 듣고 있는 강의에서 배울 핵심 기술인, DI나 AOP 와 같은 기능을 제공한다. 그리고 EJB가 제공했던 데이터 접근 기술도 기본으로 제공하는데 트랜잭션이나 ORM 지원을 통해서 DB의 사용을 편리하게 한다.

제공하는 기술이 굉장히 많기 때문에 이것만 잘 알더라도, 왠만한 프로젝트를 진행하는 데는 무리가 없을 것이라고 생각이 된다.

스프링 부트

그렇다면 스프링 부트는 뭘까? 예전에 스프링 프레임워크를 배워서 써볼 기회가 있었는데, 설정해야 하는 값이 정말로 많았던 걸로 기억한다. 여러가지 의존성을 직접 입력해주고, Tomcat 서버를 직접 설치하고 실행시켜야 했던 것으로 기억한다. 이러한 것을 해결하기 위해서 나온 것이 바로 스프링 부트이다.

그 후에 나는 스프링 부트만 사용해서 스프링의 불편함을 잊고 있었는데, 스프링 부트는 정말 실행하자마자 바로 내 서비스를 바로 실행시킬 수 있다. starter 종속성을 제공한다고 하는데, 여기안에 여러가지 설정이 묶여서 기본으로 되는 것으로 보면 된다. 

스프링의 핵심

모든 기술에는 핵심 개념이 있다. 아무리 어려운 기술일지라도, 결국 어떤 문제를 해결하기 위해서 나왔고 이를 위한 필수 개념이 존재한다는 것이다. 스프링도 마찬가지이다. 뭐 마이크로서비스를 지원하고, DB접근을 편리하게 해주고 같은 여러가지 결과가 있지만 이것은 핵심 개념은 아니다.

스프링은 결국 자바 기반의 프레임워크다. 자바의 가장 큰 특징은 무엇인가? 바로 객체지향 언어라는 것이다. 결국 스프링 프레임워크는 객체 지향적인 특징을 가장 잘 지원해서 서비스를 만들 수 있게하는 프레임워크인 것이다.

객체 지향은 프레임워크를 쓰지 않고도 잘 할 수 있고, 하지만 편리하게 사용하기 위해서 스프링을 사용한다는 것을 잊지말고 객체지향에 중점을 두자.

반응형
Comments