[Spring] @SpringBootApplication 은 어떤 역할을 할까?

2025. 5. 26. 11:21·Spring

@SpringBootApplication은 스프링에서 자주 사용하는 어노테이션이다.

우리가 기본적으로 스프링 이니셜라이저에서 스프링 부트 압축 파일을 받고 실행시키면

처음에 스프링 이니셜라이저에서 설계한 패키지명으로 ~~Application 파일이 생긴다.

그 파일을 들어가보면

package com.kh.reactbackend;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class ReactbackendApplication {

    public static void main(String[] args) {
       SpringApplication.run(ReactbackendApplication.class, args);
    }

}

 

이런식으로 @SpringBootApplication 어노테이션이 자동으로 생긴다.

이는 앞으로 여기서 개발하는 모든 작업들은 Spring 이 처리해줘 라는 역할을 하게 된다.

그러면 이 어노테이션은 어떤 일을 수행할까?

 

1. Spring Application Context 생성

- 모든 스프링 빈들을 관리하는 컨테이너를 생성한다.

 

2. 자동 설정 적용

- 클래스 패스들에 있는 의존성들을 바탕으로 필요한 설정을 자동으로 로드하고 구성한다.

- builde.gradle 에 가보면 우리가 스프링 이니셜라이저에서 초기에 설정한 의존성 값들이 있는데

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'
}

 

- 이 부분을 애플리케이션에 시작할 때, 의존성들이 잘 포함되어 있는지 확인해준다.

- 의존성에 있는 기능들을 스프링부트가 알아서 잘 실행되도록 도와준다.

 

3. 컴포넌트 스캔

- @SpringBootApplication 이 있는 패키지 및 하위 패키지에서 스프링 Bean 들을 찾아 컨테이너에 등록해준다.

- 컨트롤러나, 서비스 쪽에 어노테이션을 붙여 Bean 에 등록해주는데, Spring 이 이를 인식해줄 수 있는 이유는 스프링부트 애플리케이션 어노테이션 덕분이다.

 

4. 내장 서버 실행

- 우리는 웹 애플리케이션을 만들 기 때문에 Tomcat 을 사용하는데, 해당 어노테이션은 내장 톰캣 등의 웹 서버를 구동하여 요청을 처리할 준비를 해준다.

testImplementation 'org.springframework.boot:spring-boot-starter-test'

 

- builde.gradle 에 있는 해당 의존성, 스타터는 기본적으로 내장 Tomcat 을 포함하고 있는다.

- 해당 웹 서버가 있음을 감지해주고, 이 감지 덕분에 스프링 부트는 애플리케이션 시작시 별도의 설정 없이 자동으로 내장 Tomcat 서버를 구동한다.

 

5. 메인 클래스 식별

- @SpringBootApplication 은 스프링 부트 애플리케이션의 메인 진입점을 명시적으로 알려준다.

- 스프링 부트 애플리케이션이 시작될 때, JVM은 public static void main(String[] args) 메소드를 찾고, 이 메소드가 포함된 @SpringBootApplication 클래스를 기반으로 전체 애플리케이션 컨텍스트를 로드한다.

- 이는 애플리케이션을 JAR 파일로 패키징했을 때 실행 가능한 형태로 만들어주는 데 필수적이다.

 

 

'Spring' 카테고리의 다른 글

빌더패턴은 무엇이고 어떻게 사용할까?  (0) 2025.05.31
Maven과 Gradle의 역할과 기능은 무엇일까?  (0) 2025.05.29
프록시 패턴과 AOP에 대해 연관성  (0) 2025.05.25
[Java] Dependency Injection에 대해서, 그리고 왜 사용할까?  (0) 2025.05.21
[Spring] Spring 프레임워크란 무엇일까?  (2) 2025.05.20
'Spring' 카테고리의 다른 글
  • 빌더패턴은 무엇이고 어떻게 사용할까?
  • Maven과 Gradle의 역할과 기능은 무엇일까?
  • 프록시 패턴과 AOP에 대해 연관성
  • [Java] Dependency Injection에 대해서, 그리고 왜 사용할까?
동준1234
동준1234
공부 기록
  • 동준1234
    dongjundev
    동준1234
  • 전체
    오늘
    어제
  • GitHub
    • 분류 전체보기 (150)
      • 일상 (1)
      • 복습 및 회고록 (26)
      • Spring (17)
      • JAVA (32)
      • kubernetes (1)
      • Front-End (13)
      • Server (11)
      • SQL (20)
        • JDBC (1)
      • 자격증 (7)
        • 정보처리기사 필기 준비 (6)
        • 정보처리기사 실기 준비 (0)
        • SQLD (1)
      • project (18)
        • 백준 및 코딩테스트 공부 (6)
        • 대학교 캡스톤 디자인 (6)
        • 4학년 캡스톤 디자인 및 전시회 (3)
      • 네트워크 (3)
      • AI 머신러닝 (1)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • GitHub
  • 공지사항

  • 인기 글

  • 태그

    JavaScript
    프론트
    개발자
    react
    jQuery
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
동준1234
[Spring] @SpringBootApplication 은 어떤 역할을 할까?
상단으로

티스토리툴바