Spring

Spring 이란

Spring 이란

Spring은 Java 언어 기반의 프레임워크이다. Java로 다양한 어플리케이션을 만들기 위한 프로그래밍 틀 이라고 할 수 있다.

 

'프레임워크 (Framework)'
개발자에게 구조화된 뼈대를 제공함으로써, 기본 구조에 맞게 코드를 작성하게 하여 코드를 작성하는 시간 낭비를 줄여주고 일정한 품질이 보장되는 결과를 얻을 수 있게 해준다.

 

Spring 이라는 단어는 문맥에 따라 다르게 사용된다.

  • Spring DI 컨테이너 기술
  • Spring Framework
  • 요즘에는 Spring을 spring boot, spring framework 등 모두 포함한 스프링 생태계를 통틀어 말한다.

 

Spring의 핵심 개념, 컨셉

  • 자바 언어 기반의 프레임워크
    • 자바 언어의 가장 큰 특징 : 객체 지향 언어
  • Spring은 객체 지향 언어가 가장 강력한 특징을 살려내는 프레임워크이다.
  • Spring은 좋은 객체 지향 어플리케이션을 개발할 수 있게 도완주는 프레임워크이다.

 

Spring Framework

핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타..

웹기술 : 스프링 MVC, 스프링 WebFlux

데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원

기술 통합 : 캐시, 이메일, 원격접근, 스케줄링

테스트 : 스프링 기반 테스트 지원

언어 : 코틀린, 그루비

→ 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용한다.

 

Spring Boot

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

장점

  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 된다.
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
    • starter를 통해 필요한 다른 라이브러리도 같이 가져와준다.
  • 스프링과 3rd parth(외부) 라이브러리 자동 구성
    • 외부 라이브러리 버전에 대해서 고민을 하지 않아도된다.
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
  • 관례에 의한 간결한 설정
    • 웬만한건 default로 설정이되어있고, 메뉴얼에 나와있어 알기 쉽다.

 

Spring Project

필수

스프링프레임워크, 스프링 부트

 

선택

  • 스프링 데이터 : 새로운 데이터 접근 기술을 쉽게 사용하도록 도와준다.
  • 스프링 세션 : 세션기능 편리하게 사용
  • 스프링 시큐리티 : 보안관련
  • 스프링 REST DOCS : API 문서화 관리 편리하게
  • 스프링배치 : 배치 처리 특화
  • 스프링 클라우드 : 클라우드 기술 특화

자세한 내용은

https://spring.io/projects

 

 

참고)

스프링 핵심 원리 - 김영한 (인프런)