TIL Spring 최종정리

정예서·2026년 4월 29일

My_TIL

목록 보기
19/20

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 들을 생성한 후, 객체에 보관해라

profile
미림마이스터고 재학중인 고3 개발자 정예서입니다.

4개의 댓글

comment-user-thumbnail
2026년 5월 26일

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

1개의 답글
comment-user-thumbnail
2026년 6월 22일

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

1개의 답글