해당 글은 Inflearn(https://www.inflearn.com/)에서 제공하는 김영한 개발자 님의 스프링 핵심 원리 - 기본편(https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard)를 듣고 제가 학습한 내용을 정리한 내용입니다. 학습 내용의 모든 출처는 해당 강의에 있습니다.
Spring | Spring boot |
---|---|
Spring이 등장하기 이전 EJB (Enterprise JavaBeans)는 애플리케이션의 업무 로직을 담당하는 자바 표준 기술이었다.
EJB의 등장으로 개발자는 비즈니스 로직에 집중 할 수 있는 환경을 갖추었지만, 하나의 기능을 구현하기 위해 클래스 간 상속, 인터페이스의 구현 등 각 클래스 간의 의존도가 커짐으로 배보다 배꼽이 더 큰 상황에 부딪혔다.
이로 인해, 마틴 파울러는 EJB에 반발해 오래된 방식의 "간단한 자바 오브젝트로 돌아가자"는 말을 했고, 이는 POJO(Plain Old Java Object)라는 용어의 기원이 되었다.
EJB의 불편함을 통해 대표적으로 2가지의 Open Source가 등장한다.
2002년 로드 존슨이 EJB의 문제점을 지적하면서 고품질의 확장 가능한 애플리케이션을 개발할 수 있음을 보여주고, 30,000 라인 이상의 기반 기술 예제 코드를 선보이면서 시작되었다.
30,000라인의 예제 코드에는 현재 스프링의 핵심 개념과 기반 코드인 BeanFactory, ApplicationContext, POJO, IoC(제어의 역전) , DI(의존성 주입)등 이 포함되었다.
로드 존슨의 책 출간 직후 유겐 휠러(Juergen Hoeller)와 Yann Caroff(얀 카로프)가 오픈소스 프로젝트를 제안하고 이후 지금까지도 스프링의 핵심 코드는 유겐 휠러가 개발하고 있다.
2003년 스프링 프레임워크 1.0의 출시, 2014년 스프링 부트 1.0 출시, 2020년 현재 스프링 프레임워크 5.2.x, 스프링 부트 2.3.x
스프링 프레임워크, 스프링 부트와 함께 스프링 데이터, 스프링 세션, 스프링 시큐리티, 스프링 RestDocs, 스프링 배치, 스프링 클라우드 등과 함께 사용된다.
Spring | Spring boot |
---|---|
스프링 프레임워크의 핵심 개념은 DI 컨테이너, AOP등 이며, 스프링 MVC와 같은 웹기술을 제공하고 JDBC, ORM 프레임워크의 지원, Mybatis와 같은 XML기반 데이터 접근 기술을 지원한다. 또한, 스프링 기반 테스트를 지원한다.
스프링 프레임워크의 장기간에 걸친 환경설정과 어려움을 해결하기 위해 스프링 부트가 등장했다.
스프링의 핵심 개념은 무엇일까? 웹 애플리케이션을 만들고 DB 접근을 편리하게 해주는 기술? 아니다. 차례 대로 파악해보자.
스프링은 Java 언어 기반의 프레임 워크이다. 그렇다면 Java의 가장 큰 특징은?
Java는 객체 지향 언어이다. 그렇다면 스프링 프레임워크는 객체 지향 언어의 강력한 특징을 살려내 줄 수 있는 프레임워크이다. 이는 좋은 객체 지향 애플리케이션을 개발할 수 있게 도와주는 프레임워크라는 것이다.
Spring Framework -> Java 언어 -> 객체 지향 언어
Spring Framework는 객체 지향 애플리케이션 개발 프레임워크
강의를 들으면서, 해당 기술을 코드로만 아는 것은 중요하지 않다는 것을 깨달았다. 해당 기술의 기원이 무엇이고, 과거에 사용한 기술이 어떤 한계를 느끼고 해당 기술이 등장했는지 알면 추후에 코드를 구현할 때 이유를 모르고 코드를 구현하는 것이 아닌 정확한 의도를 파악하고 코드를 구현할 수 있을 것이라 생각한다.
Inflearn 김영한 님의 스프링 핵심 원리 - 기본편 : https://www.inflearn.com/course/스프링-핵심-원리-기본편/dashboard
위키피디아 EJB : https://ko.wikipedia.org/wiki/엔터프라이즈_자바빈즈
위키피디아 POJO : https://ko.wikipedia.org/wiki/Plain_Old_Java_Object