[Spring] 스프링을 사용하는 이유
스프링 핵심 원리 - 기본편 (김영한) 강의를 바탕으로 정리한 글입니다.
📌 스프링을 사용하는 이유
🫧 Spring이란?
✨ 스프링의 역사
- 좋은 객체지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크
- 객체지향의 장점을 살려 개발이 가능함.
스프링이 없던 시절, 개발자들은 자바로 엔터프라이즈 애플리케이션을 개발하기 위해 EJB(Enterprise Java Beans)을 사용했다.
그러나 이는 객체지향의 장점을 죽이며, EJB에 의존해야 하는 등 갖은 문제가 있었기 때문에 개발자들은 순수한 객체지향 프로그래밍으로 다시 돌아가자며 POJO(Plain Old Java Object)를 주장할 정도였다.
그러나 객체지향을 살린 스프링이 등장하며 전세가 역전되어 스프링 생태계라 불리울 만큼 대부분의 서버가 스프링 프레임워크를 기반으로 생성되는 것이다.
🫧 Jpa란?
이에 대한 설명은 기존에 자세하게 정리해둔 블로그 글을 참조하면 좋을 것 같다.
🫧 Spring과 SpringBoot는 무엇이 다를까?
둘은 모두 스프링 프레임워크를 기반으로 한 자바 웹 개발 프레임워크이다.
✨ 스프링
- 스프링 프레임워크의 핵심 모듈을 모아서 만든 프레임워크
✨ 스프링부트
- 스프링 프레임워크를 보다 쉽게 사용할 수 있도록 만든 프레임워크
- 설정 파일을 따로 작성할 필요 없이, 프로젝트 설정과 라이브러리 의존성을 자동으로 처리해준다.
- 스프링의 다양한 기술들 (스프링 DB, 스프링 등)을 편리하게 사용할 수 있도록 도와준다.
- 웹 서버도 내장해 갖고 있어, 별도의 톰캣 서버를 세팅해줄 필요가 없다.
✨ 차이점
스프링은 객체지향의 장점을 살린 좋은 프레임워크이지만, 개발자가 직접 설정 파일을 작성하여 스프링 컨테이너를 구성하고, 필요한 빈 객체를 등록하고, 빈 객체 간 의존성을 설정해야 하는 등의 번거로운 작업이 함께 요구된다.
그러나 스프링부트를 쓰게 되면, 다음과 같은 작업들을 자동으로 해 준다.
스프링부트가 없을 때 서버를 빌드하고자 하면 다음과 같은 과정을 거쳐야 한다.
빌드 -> 톰캣 서버를 별도로 설치 -> 톰캣 서버의 위치에 스프링 프레임워크를 설정 …
생각만 해도 복잡하다.
그렇기 때문에 요즘의 개발자들은 모두 스프링부트를 함께 쓴다.
스프링부트와 스프링은 다른 개념이긴 하지만, 스프링부트는 단독으로 실행 가능한 것이 아니라는 사실을 늘 명심하자! 스프링을 쉽게 사용하기 위해 쓰는 보조 도구일 뿐이다.
🫧 스프링 프레임워크
핵심 기술, 웹 기술, 데이터 접근 기술 등 다양한 기술을 편리하게 사용 가능하도록 도와주는 프레임워크이다.
우리는 그중에서도, 핵심 기술과 관련된 내용을 주로 다룰 것이다.
✨ 핵심 기술
- 스프링 DI 컨테이너
- AOP
- 이벤트
등, 많은 기술이 존재한다.
참고로, 스프링 데이터 또한 스프링 프레임워크의 기술 중 하나인데, 가장 유명한 것은 스프링 데이터 JPA이다.
이는 JPA를 스프링에서 편리하게 사용하도록 도와주는 기술이다.