[Spring Core] 스프링이란?

Swim Lee·2021년 1월 26일
4

Spring Core

목록 보기
1/10
post-thumbnail

스프링은 어떤 특정한 하나가 아니라 여러가지 기술들의 모음이라고 할 수 있다.

스프링 프레임워크

  • 핵심기술 : 스프링 DI 컨테이너, AOP, 이벤트, 기타
  • 웹기술 : 스프링 MVC, 스프링 WebFlux
  • 데이터 접근 기술 : 트랜잭션, JDBC, ORM 지원, XML 지원
  • 기술 통합 : 캐시, 이메일, 원격 접근, 스케줄링
  • 테스트 : 스프링 기반 테스트 지원
  • 언어 : 코틀린 그루비
  • 최근에는 스프링 부트를 통해서 스프링 프레임워크의 기술들을 편리하게 사용

스프링 부트

  • 스프링을 편리하게 사용할 수 있도록 지원, 최근에는 기본으로 사용
  • 단독으로 실행할 수 있는 스프링 애플리케이션을 쉽게 생성
  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
    • 예전에는 스프링 프레임워크를 쓰려면 사용하려는 라이브러리를 다 dependency 등록 일일이 해줘야했음 (또 서로 호환되는 버전까지 일일이 입력해서 해줘야해서 굉장히 번거로움)
    • 스프링 부트에서는 starter 종속성(라이브러리) 하나만 땡기면, 필요한 나머지 라이브러리까지 같이 땡겨주기 때문에 굉장히 편리함
  • 스프링과 3rd parth(외부) 라이브러리 자동 구성
    • 과거에는 외부라이브러리 사용시 서로 호환되는 버전을 일일이 알아보고 의존해야했다
    • 스프링 부트는 내부적으로 유명한 외부라이브러리 버전별 호환 정보를 다 알고있어서 따로 명시안해주면 알아서 알맞은 버전을 땡겨온다
  • 메트릭, 상태확인, 외부 구성 같은 프로덕션 준비 기능 제공
    • 운영환경에서 모니터링 굉장히 중요한데, 그러한 것들을 스프링 부트가 기본적으로 어느정도 제공해준
  • 관례에 의한 간결한 설정
    • 그냥 스프링 프레임워크만 사용하려면 설정이 굉장히 복잡하다
    • 스프링 부트는 기본적인 것은 디폴트 설정으로 알아서 해주고 필요한 부분만 메뉴얼 보고 변경하면 된다

참고로 스프링 부트는 스프링 프레임워크와 별도로 사용하는 것이 아니다!! 스프링이 제공하는 다양한 기능들을 편리하게 사용할 수 있도록 해주는 것이 바로 스프링 부트이다.

스프링 단어?

  • 스프링이라는 단어는 문맥에 따라 다르게 사용된다.
    • 스프링 DI 컨테이너 기술
    • 스프링 프레임워크
    • 스프링 부트, 스프링 프레임워크 등을 모두 포함한 스프링 생태계

핵심 개념

  • 이 기술을 왜 만들었는가?
  • 이 기술의 핵심 컨셉은?

스프링의 핵심 개념, 컨셉?

  • 웹 애플리케이션 만들고, DB접근 편리하게 해주는 기술?
  • 전자정부 프레임워크?
  • 웹 서버도 자동으로 띄워주고?
  • 클라우드, 마이크로 서비스?

이게 핵심 아님, 이런 것들은 다 결과물일 뿐이다

스프링의 진짜 핵심

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

그렇기 때문에, 좋은 객체지향 프로그램이 무엇인지 이해해야 스프링 프레임워크를 제대로 이해할 수 있다.


해당 게시글은 인프런 김영한님의 <스프링 핵심 원리 - 기본편>을 듣고 정리한 내용입니다.

profile
백엔드 꿈나무 🐥

0개의 댓글