TIL Spring 최종정리

정예서·2026년 4월 29일

My_TIL

목록 보기
19/19

Spring Framework란?

  1. 자바 기반 응용 프로그램 개발 프레임워크
  2. 2003년 6월 Rod Johnson 발표
  3. 모든 Java 애플리케이션 개발 이용 ㄱㄴ
  4. Java EE 기반 웹 애플리케이션 개발
스프링프레임워크스프링부트
특징IOC, DI, AOPauto/내장서버
복잡도설정 복잡최소한의 설정
프젝go수동으로 설정initalizer 프젝 생성
배포외부서버 배포내장서버 인한 단독 실행 가능

⇒ Spring Framework는 기반 기술, Spring Boot는 Spring을 더 쉽고 빠르게 쓰게 해주는 도구다.


Spring Framework

  • 경량 컨테이너
  • POJO 방식
  • IoC 지원 (제어의 역전) <개념>
    • 객체생성이나 관리 그런 부분이 Spring이 다 해줌. 개발자는 그걸 요청하는 코딩만 하면 되는 것. (예전에는 객체생성이나 관리까지 개발자가 함)

    • 제어의 역전

    • 스프링 컨테이너 객체 생성

    • 개발 효율성(up) 유지보수 용이

      <주요 특징>

      → 객체 생성, 초기화 자동 관리

      → 의존 관계를 자동으로 연결 편리 제공

      → 유연한 구조로 설정 변경 용이

      → 낮은 결합도로 유지보수 용이

      ⇒IoC는 매니저(소속사)가 있다는 느낌 (직접스케줄관리X)

  • DI 지원 (의존성 주입) 1) 생성자 DI (Constructor DI)
    2) setterDI

  • AOP 지원 공통으로 들어가는 것을 (횡단관심)
    횡단관심은 : 공통기능 → spring이 관리함
    필요한 핵심 기능 (종단관심)
    종단관심: 핵심기능 → 개발자가 관리함.

다형성

자바에서의 모든 객체는 부모클 참조변수나 구현한 인터페이스 변수에 담을 수 있다. ⇒ 이러한 참조변수를 통해 메서드를 호출하면 오버라이딩된 메서드가 호출된다.

Spring Framework 장점

  • 코드량 감소
  • 생산성 향상
  • 유지보수 쉬움
  • 의존성 관리 편함 (DI)
  • 재사용성 높음

빌드도구

  • 소스코드를 컴파일부터 배포까지의 전 과정을 자동으로 실행시켜주는 도구*
  1. 빌드 자동화는 소프트웨어 개발의 효율성을 높이는 중요한 과정
  2. 필요한 라이브러리를 다운로드
    3.코드 컴파일, 자동으로 테스트 실행 후
  3. 실행 파일을 생성, 배포
    5. Maven(pom.xml) / gradle (build.gradle)

스프링은 요리사 개발자는 사장넴

spring application에 필요한 라이브러리: spring-context

스프링의 maven 라이브러리들이 모아져 있는 곳에서 다운받아야함.

Java에서 class 에서 활용되는 get set이 Spring에서는 getBean()이런 느낌으로 활용이 된다.


Maven 핵심 한 줄

XML 기반으로 프로젝트 빌드와 라이브러리를 자동 관리하는 도구

  • 자바 프로젝트 빌드 자동화 도구
  • XML로 설정을 관리한다
  • 라이브러리를 자동으로 다운로드한다
  • 프로젝트 라이프사이클 관리 가능
  • Apache(아파치)에서 개발
MavenGrable
비유공공기관 메뉴얼식 운명스타트업식 자동화
특징정해진 규칙자유도 높음
설정XMLGroovy/ Kotilin
속도보통빠름

IoC 컨테이너 : 객체 생성과 의존성 관리를 수행하는 스프링의 핵심 구성 요소

  • IoC(Inversion of Control) : 객체 생성과 관리의 제어권이 개발자가 아닌 프레임워크에 있는 것
  • 개발자가 객체를 직접 생성하지 않고, 프레임워크가 생성한 객체를 주입받아 사용한다.
  • 스프링에서는 IoC 컨테이너가 객체 생성과 의존성 주입을 담당한다.

POJO Class

  • POJO (Plain Old Java Object) : 자바 모델이나, 기능, 프레임워크 등에 따르지 않고 홀로 독립적이며 단순한 기능만을 가진 객체들을 의미한다.
  • 자바에서는 이러한 객체들을 Bean이라고 부른다.
  • 단순히, 데이터의 저장기능만 있다.

Spring Bean 객체 생성

  • Spring에서는 사용할 Bean 객체를 configuration file에 정의를 하고, 필요할 때 객체를 가져와 사용하는 방법을 이용한다.
  • bean 태그 : 사용할 Bean을 정의하는 태그

인터페이스

  1. 다형성(polymorphism)
    부모의 참조변수로 자식객체를 생성한다.
  • 코드 수정이 용이하다.
  1. 상수
  2. 추상메서드

MVC(Model,View,Controller)

  1. Model(모델): 데이터 (주로 데이터베이스에 있는 데이터)
  2. View : 사용자에게 보여주는 것(UI)
    - 템플릿 엔진을 사용해서 예쁘게 꾸며준다. (타임리프 사용)
  3. Controller : 실제 일을 하는 애 (비즈니스 로직 처리)

*** dispatcher Servlet: 모든 요청을 받아서 적절한 controller에 보내는 애

MVC 장점

분업화: 요리사(모델)가 바뀌어도 서빙 방식(컨트롤러)은 그대로 유지

유지보수: "접시만 바꾸고 싶어(뷰 수정)" 할 때 요리 방법(모델)을 건드릴 필요가 없음

유연성: 같은 요리(데이터)를 접시에도 담을 수 있고, 포장 박스(다양한 뷰)에도 담을 수 있음


  • @SpringBootApplication: 컴포넌트 스캔 + 자동 설정을 포함한 핵심 어노테이션
  • @Component: 컨테이너에 빈(Bean) 객체로 자동 등록
  • @Autowired: 타입에 맞춰 의존성을 자동으로 주입
    • 기본형(@Value)은 아니고, 참조형에만 적용됨
    • 타입을 보고 자동주입
  • @Qualifier(”이름”)
    • 같은 클래스의 객체를 여러 개 만들 수 있다
  • static / templates: 정적 파일(JS, CSS)과 타임리프(HTML) 템플릿 보관 폴더

@SpringBootApplication
1. @component-scan : 클래스들을 스캔해서 반으로 만들어서 컨테이너에 보관


사용자가 입력한 데이터를 받아오는 방법

  1. HttpsServletRequest
  2. WebRequest
  3. @RequestParam : 1개씩 변수를 받는다.
  4. @PathVariable : restAPI에서 사용. 폴더가 아니라 데이터로 인식하고 싶을 때 사용한다.
  5. @ModelAttribute : + dto가 있어야 함(POJO 클래스 : 멤버변수+set/get만 있는 거)
    클래스의 멤버변수 이름 : 요청되는 변수명하고 반드시 일치해야함.

@ResponseBody이란?
return “abc”;
⇒ abc.html파일로 인식하는 것이 아니라, 단순 문자열로 인식하여 그대로 브라우저에 실행


springboot 주요 파일

  • static 폴더: 정적파일 보관(html, css,js, image)
  • templates: 타임리프 파일이 존재하는 폴더

@springbooApplication (1+2번을 포함하는 어노테이션)

  1. <context:component-scan basePackgages=“kr.hs.study.beans”/>
    kr.hs.study.beans패키지아래에 있는 클래스들을 스캔해서 어노테이션을 분석한 후, 객체 생성하고, 컨테이너에 보관해라!

  2. 프로젝트 실행에 필요한 기본적인 bean 들을 생성한 후, 객체에 보관해라

3개의 댓글

comment-user-thumbnail
2026년 5월 26일

그렇게 그녀는 한 달 동안 자취를 감췄다고 한다…

1개의 답글
comment-user-thumbnail
6일 전

그렇게 그녀는 두 달 동안 자취를 감췄다고 한다…
아주 빠졋어 빠져~~

답글 달기