본문 바로가기

웹 개발/스프링

[스프링] 스프링이라굽쇼?

0. 스프링의 등장 배경

- 2002년에 로드 존슨이 JEB의 문제점을 지적하며 출판한 "J2EE Design and Development "에는 현재 스프링의 핵심 개념과 기반 코드들이 포함되어 있습니다. (Bean Factory, ApplicationContext, POJO, IoC, DI)

- 로드 존슨의 출간 이후 유겐 휠러(Juergen Hoeller)와 얀 카로프(Yann Caroff)가 오픈 소스 프로젝트를 제안 했으며 현재까지 스프링의 핵심 코드를 유겐 휠러가 개발하고 있습니다. 

- 2003년 스프링 프레임워크 1.0을 출시 후 2014년 스프링 부트 1.0이 출시 되었으며 2020년에는 현재 스프링 5.2.x, 스프링 부트 2.3.x가 출시되어 있습니다. 

 

https://velog.io/@neity16/Spring-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8-1-Spring%EC%9D%98-%EB%93%B1%EC%9E%A5%EB%B0%B0%EA%B2%BD-%EC%83%9D%ED%83%9C%EA%B3%84-%EA%B0%9D%EC%B2%B4%EC%A7%80%ED%96%A5-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D

 

Spring 핵심 원리 기본편 (1) - Spring의 등장배경 / 생태계 / 객체지향 프로그래밍

본 글은 inflearn의 김영한님의 강좌를 ref합니다Java 진영에서 표준으로 사용하는 기술 인 EJB(J2EE)를 사용이론적으로 괜찮았지만 실제 사용 비용이 비싸며 사용하기가 매우 복잡 --> 추후 Spring 등장

velog.io

https://post.dooray.io/we-dooray/tech-insight-ko/back-end/4173/

 

스프링 부트 3.0 으로 전환 - Dooray! POST

2022년 11월에 기존의 Spring framework 5 와 Spring Boot 2.X 버전을 대체하는 Spring framework 6와 Spring Boot 3 가 릴리즈되었습니다. 어떤 변화가 있고, 어떻게 설정해야 할지 알아봅니다

post.dooray.io

https://www.codestates.com/blog/content/%EC%8A%A4%ED%94%84%EB%A7%81-%EC%8A%A4%ED%94%84%EB%A7%81%EB%B6%80%ED%8A%B8

 

스프링과 스프링부트(Spring Boot)ㅣ정의, 특징, 사용 이유, 생성 방법

스프링은 Java 백엔드 개발에 있어 떼어놓을 수 없는 프레임워크입니다. Java 백엔드의 핵심 기술이 되는 스프링 프레임워크와 스프링 부트가 무엇인지, 나아가 스프링 부트를 활용하여 프로젝트

www.codestates.com

 

 

1. 스프링이란

스프링은 자바 기반의 오픈소스 프레임워크입니다. 엔터프라이즈급 어플리케이션 개발을 위한 다양한 기능을 제공하며 객체지향적 설계와 구현을 촉진합니다. 모듈성, 재사용성을 높이기위해 다양한 기능을 제공합니다. 

 

스프링의 대표적 기능은 다음과 같습니다.

 

  • IoC 컨테이너 : 자바 빈 객체의 생성과 생명주기를 관리합니다.
  • AOP 프레임워크 : 어플리케이션의 부가 기능을 분리해 관리합니다. 
  • 데이터 엑세스 기술 : JDBC, JPA, MyBatis 등 다양함 데이터 엑세스 기술을 지원합니다.
  • 트랜잭션 관리 : 일관된 방식의 트랜잭션 처리를 지원합니다.
  • 웹 프레임워크 : MVC 패턴 기반 스프링 웹 MVC를 제공합니다.
  • 보안 : 웹 보안, 인증, 권한 등의 기능을 제공합니다. 

스프링의 여러 기능들은 모듈화되어 각각 독립적으로 사용할 수 있으며 필요한 모듈만 선택해 사용할 수 있습니다. 

스프링의 모든것

스프링 부트는 스프링을 편리하게 사용할 수 있도록 지원하는 기술로서 내장 톰켓 등을 통해 스프링 기반 어플리케이션을 쉽게 생성할 수 있습니다. 빌드 구성 또한 손쉽게 관리할 수 있도록 starter 종속성 패키지를 제공합니다. 

 

스프링은 EJB가 가진 문제점들이 마치 개발자들에게 겨울과 같다 하여 이 겨울을 끝내기위해 등장했습니다. EJB는 생명주기 관리, 보안, 트랜잭션 관리, 오브젝트 풀링 등의 기능을 지원해 대규모 동시접속이 빈번한 어플리케이션에 대해 강한 장점을 가지고 있지만 특정 환경에 쉽게 종속되는 코드, 객체지향적이지 않음, 형편없는 개발 생산성, 자동화 테스트가 매우 어려운 점 등등 많은 단점을 지니고 있습니다. 스프링은 IoC, DI, AOP, 스프링 mvc를 지원하며 POJO방식 프레임워크라고 불립니다. 스프링은 간단한 컴포넌트들로 복잡한 어플리케이션을 구성하고 설정할 수 있으며 높은 확장성을 지니고 있습니다. 

 

넓은 의미에서 스프링은 스프링 생태계를 의미합니다. 스프링은 핵심 컨테이너를 비롯한 JDBC, MVC, 테스트 등의 다양한 모듈을 제공하며 스프링 부트는 스프링 프레임워클를 기반으로한 자동설정 기능을 제공하여 어플리케이션의 개발을 보다 빠르고 쉽게 만들어 줍니다. 또한 스프링 생태계에는 다음과 같은 라이브러리, 프레임워크, 도구 등이 포함됩니다. 스프링 데이터, 스프링 클라우드, 스프링 시큐리티, 스프링 배치, 스프링 인티그레이션, 스프링 배포도구, 생성도구, 개발도구 등이 있습니다.

  • 스프링 : JDBC, AOP, ORM, DAO, Spring Context, Spring MVC 등 자바 기반 웹 어플리케이션 프레임워크
  • 스프링 부트 : 스프링 기반 자동설정 기능을 제공하는 프레임워크
  • 스프링 데이터 : 데이터 엑세스 기술 지원하는 다양한 라이브러리, JPA, MongoDB, Redis 등으 데이터베이스와 연동
  • 스프링 클라우드 : 분산 시스템 아키텍처를 구현하는 라이브러리와 도구를 제공. 마이크로 아키텍처 구현을 위해 필수적
  • 스프링 시큐리티 : 보안, 인증, 권한 관리 등의 기능을 제공하는 라이브러리
  • 스프링 배치 : 대용량 데이터 처리를 지원하는 라이브러리
  • 스프링 인티그레이션 : 다양한 시스템 간의 연동을 지원 : 메시징, 웹 서비스, 파일 처리 등의 다양한 인티그리션 패턴을 지원
  • 스프링 도구 : 스프링 배포 도구(Spring Deployment Tool), 스프링 프로젝트 생성 도구(Spring Initializr), 스프링 개발 도구(Spring Tool Suite) 

 

2. 스프링 부트란

스프링 부트란 스프링 프레임워크 + 톰캣 서버 + 편의 기능 입니다. 이를 통해 스프링 부트는 스프링 기반 프로젝트의 생성을 도와주는 것 뿐만 아니라 WAS를 내장된 톰캣 서버를 통해 설정 및 자동 적용 되어 있으며, 웹 프로그램을 만들 때 가장 어려운 부분인 보안 기능을 간단하게 구현하도록 돕습니다.