Java Framework/[인프런] 스프링 핵심 원리 - 기본편

[Spring] Spring 이란?

annovation 2026. 1. 22. 23:41

Spring

출처 : https://www.edureka.co/blog/videos/building-web-application-using-spring-framework/

 

💡Spring 이란?

  • Spring 은 특정한 하나가 아니라 아래 나열된 여러가지 기술들의 모음이라고 볼 수 있다.

💡필수

  • Spring Framework : Spring 의 가장 핵심

출처 : https://spring.io/projects

  • Spring Boot : Spring Framework 를 편리하게 사용할 수 있게 해주는 프레임워크

출처 : https://spring.io/projects

 

💡선택

  • Spring Data
    • 데이터베이스 CRUD 를 편리하게 사용할 수 있도록 도와주는 기술
    • 주로 Spring Data JPA 를 많이 사용
  • Spring Session
    • 세셔 기능을 편리하게 사용할 수 있도록 도와주는 기능
    • ex. 세션 만료 시간 통합 관리, 세션 무효화, 사용자별 동시 로그인 제어, Spring Security 와 연동
  • Spring Security
    • Spring Framework 로 만든 애플리케이션을 보호하기 위한 보안 프레임워크
    • 로그인, 회원관리, 권한 설정, 해킹 방지 등의 보안 기능을 개발자가 직접 만들고 관리할 필요 없음
  • Spring Rest Docs
    • 테스트를 통해 검증된 REST API 만 문서로 생성해주는 도구
    • 코드와 문서의 불일치 방지
  • Spring Batch
    • 대용량 데이터를 한 번에 묶어서(batch) 처리하기 위한 배치 처리 프레임워크
    • 정해진 시간, 조건에 따라 많은 데이터를 안정적으로 처리해줌
  • Spring Cloud
    • MSA 환경에서 필요한 공통 인프라 관리 도구

💡Spring 단어

  • Spring 은 문맥에 따라 다양하게 해석될 수 있다.
  • 좁게는 Spring 의 핵심 기술인 Spring DI Container 기술을 뜻한다.
  • Spring Framework 자체를 의미하기도 한다.
  • Spring Boot, Spring Framework 등을 모두 포함한 스프링 생태계로 사용되기도 한다.

Spring Framework

💡Spring Framework 구성

  • 핵심 기술
    • Spring DI 컨테이너
    • AOP
    • 이벤트
    • 기타
  • Web 기술
    • Spring MVC
    • Spring WebFlux
  • 데이터 접근 기술
    • DB 트랜잭션
    • JDBC
    • ORM 지원
    • XML 지원
  • 기술 통합
    • 캐시
    • 이메일
    • 원격 접근
    • 스케줄링
  • 테스트
    • Spring 기반 테스트 지원
  • 언어
    • Kotlin
    • Groovy

Spring Boot

💡Spring Boot 란?

  • Spring Boot 는 Spring Framework 를 편리하게 사용할 수 있도록 지원해주는 프레임워크이다.
  • 최근에는 프로젝트에서 Spring Boot 를 기본으로 사용한다.

💡특징

  • Tomcat 같은 웹 서버를 내장해서 별도의 웹 서버를 설치하지 않아도 됨
    • 단독으로 실행할 수 있는 Spring 애플리케이션을 쉽게 생성
    • Tomcat 설치나 서버 설정 따로 필요 없음
  • 손쉬운 빌드 구성을 위한 starter 종속성 제공
    • ex. 웹 API 를 만들고 싶을 때,
      implementation 'org.springframework.boot:spring-boot-starter-web'
      을 통해서 해당 기능을 쓰려면 필요한 라이브러리들을 가져와준다.
  • Spring 과 3rd party (외부) 라이브러리 자동 구성
    • ex. MySQL 을 사용하려고 하면,
      implementation 'mysql:mysql-connector-j'
      라이브러리를 추가하고,
      spring:
        datasource:
          url: jdbc:mysql://localhost:3306/test
          username: root
          password: 1234

      yml 설정 파일을 작성하면 Spring 이 자동으로 연동해준다.
  • 메트릭, 상태 확인, 외부 구성 같은 프로덕션 준비 기능 제공
    • implementation 'spring-boot-starter-actuator'
      을 통해 운영할 때 꼭 필요한 기능들을 기본으로 제공
    • ex. 서버가 살아있는지, 메모리를 얼마나 쓰는지, DB 연결 상태는 어떤지 등
  • 관례에 의한 간결한 설정
    • 대부분의 사람들이 이렇게 쓸 거라 가정하고 기본값을 정해줌

Spring은 왜 만들었나요?

  • Spring 의 핵심 개념을 이해하면 기술을 이해하기 쉬워지기 때문에 Spring 이 만들어진 이유에 대해 알아보자
  • 이 기술은 왜 만들었는지? 핵심 컨셉은 무엇인지?

💡Spring 핵심 개념

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

💡그래서 그게 뭔데?

  • Spring 이전에는 EJB 라는 기술이 있었지만, 굉장히 의존적이고 복잡하고 어려운 단점이 있었다.
  • 이렇게 의존적일 경우, EJB에 종속되어 EJB 스탕이로만 개발해야하기 때문에 객체 지향이 가진 좋은 장점들을 잃게 된다.
  • 이러한 단점을 극복하고 객체 지향 본래의 특성을 활용하기 위해 순수한 Java 로 돌아가기 위한 POJO 개념이 등장하기도 했다.
  • 이러한 POJO 기반 개발을 실제로 가능하게 만들기 위해 Spring은 객체 생성과 의존성 관리를 컨테이너가 담당하는 IoC와 DI 개념을 도입하였다.

💡결론

  • Spring 이 제대로 된 객체지향 프로그래밍을 할 수 있게 도와주는 도구라는 것

💡어렵네

  • 좋은 객체 지향 프로그램이란 뭘까를 이해해야 Spring Framework 를 제대로 이해할 수 있다.
  • 이것이 모든 것의 출발점 !
  • Spring 의 본질을 알면 객체 지향 프로그래밍에 얼마나 최적화 되어있는지 이해할 수 있다.

출처

https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-%ED%95%B5%EC%8B%AC-%EC%9B%90%EB%A6%AC-%EA%B8%B0%EB%B3%B8%ED%8E%B8/dashboard

 

스프링 핵심 원리 - 기본편| 김영한 - 인프런 강의

현재 평점 5.0점 수강생 49,133명인 강의를 만나보세요. 스프링 입문자가 예제를 만들어가면서 스프링의 핵심 원리를 이해하고, 스프링 기본기를 확실히 다질 수 있습니다. 스프링 기본 기능, 스프

www.inflearn.com