@SpringBootApplication 어노테이션은
Spring Boot 애플리케이션의 진입점 클래스에 사용되는 어노테이션으로, 여러 개의 중요한 Spring 어노테이션을 조합한 것입니다. 이 어노테이션은 Spring Boot 애플리케이션을 설정하고 부트스트랩하는 데 중요한 역할을 합니다.
구성 요소
@SpringBootApplication 어노테이션은 다음 세 가지 어노테이션을 조합한 것입니다:
- @SpringBootConfiguration:
- @Configuration을 확장한 것으로, Spring 애플리케이션 컨텍스트를 정의하는 데 사용됩니다.
- 이 어노테이션은 해당 클래스가 하나 이상의 @Bean 메서드를 포함하는 설정 클래스임을 나타냅니다.
- @EnableAutoConfiguration:
- Spring Boot의 자동 설정 기능을 활성화합니다.
- Spring Boot는 클래스패스에 있는 라이브러리와 애플리케이션에서 정의한 빈을 기반으로 적절한 설정을 자동으로 적용합니다.
- @ComponentScan:
- 이 어노테이션은 현재 패키지와 그 하위 패키지에서 @Component, @Service, @Repository, @Controller 등이 붙은 클래스를 찾아서 스프링 빈으로 등록합니다.
- 기본 패키지부터 하위 패키지까지 스캔하기 때문에 애플리케이션의 구조를 간결하게 유지할 수 있습니다.
작동 원리
@SpringBootApplication 어노테이션을 사용하면 다음과 같은 작업이 수행됩니다:
- 설정 클래스 등록:
- 애플리케이션 클래스는 @Configuration 역할을 하므로, Spring 애플리케이션 컨텍스트에서 사용할 수 있는 하나 이상의 빈을 정의할 수 있습니다.
- 자동 설정 활성화:
- @EnableAutoConfiguration을 통해 Spring Boot는 클래스패스와 정의된 빈을 기준으로 다양한 설정을 자동으로 구성합니다.
- 예를 들어, spring-boot-starter-web 라이브러리를 사용하면 자동으로 Spring MVC를 설정합니다.
- 컴포넌트 스캔:
- @ComponentScan은 애플리케이션 클래스의 패키지와 그 하위 패키지를 스캔하여, @Component가 붙은 클래스를 스프링 빈으로 등록합니다.
- 이를 통해 컨트롤러, 서비스, 리포지토리 등의 빈이 자동으로 등록되고 관리됩니다.
package com.example.demo;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class DemoApplication {
public static void main(String[] args) {
SpringApplication.run(DemoApplication.class, args);
}
}
프로젝트 구조 (예시)
src/main/java
└── com
└── example
└── demo
├── DemoApplication.java
├── controller
│ └── HelloController.java
├── service
│ └── CalculatorService.java
└── repository
└── MyRepository.java
프로파일 관리 프로젝트 구조 (내가 실제 한 프로젝트)
src/main/java
└── com
└── 회사명
└── profile
├── ProfileApplication.java
├── domin
│ └── profile
│ └── controller
│ └── dto
│ └── service
│
├── global
│ └── common
│ └── config
│ └── util
└── logging
│ └── MyRepository.java
└── mapper
컨트롤러
package com.example.demo.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello, Spring!";
}
}
서비스 클래스
package com.example.demo.service;
import org.springframework.stereotype.Service;
@Service
public class CalculatorService {
public int add(int a, int b) {
return a + b;
}
}
리포지토리 클래스
package com.example.demo.repository;
import org.springframework.stereotype.Repository;
@Repository
public class MyRepository {
// 데이터 접근 로직
}
요약
- @SpringBootApplication은 @SpringBootConfiguration, @EnableAutoConfiguration, @ComponentScan의 조합입니다.
- 이 어노테이션은 Spring Boot 애플리케이션을 설정하고 부트스트랩하는 데 중요한 역할을 합니다.
- 이를 통해 Spring 애플리케이션의 설정이 간소화되고, 자동 설정 및 컴포넌트 스캔 기능이 활성화됩니다.
'스프링 공부' 카테고리의 다른 글
Spring 스프링 프레임워크 - 의존관계 주입(Dependency Injection, DI ) (0) | 2024.08.08 |
---|---|
Spring Web MVC/ 스프링 RestAPI를 위한 어노테이션 (0) | 2024.08.07 |
스프링 빈 Spring Bean 정리 (0) | 2024.08.07 |
Spring Context 스프링 컨텍스트? 스프링 컨테이너? 개념 정리 (0) | 2024.08.06 |
Spring Framework 개념 정리 (0) | 2024.08.06 |
댓글