일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 레퍼럴
- Meta Quest3
- Initiative Q
- 알고리즘
- 프로그래머스
- BOJ
- C++
- 논블록
- spring
- SOLID
- 11060
- SWEA
- 메타퀘스트3
- D3
- 이니셔티브 q
- 점프 점프
- 삼성 SW 역량 테스트 기출 문제
- 재밌게 할래요
- 블록
- Design Pattern
- 어싱크
- d4
- 디자인패턴
- D2
- level2
- 10505
- 리퍼럴
- Java
- 자료구조
- 백준
- Today
- Total
아직은 정체성이 없는 블로그
[Spring][Spring boot] @SpringBootApplication 이란? 본문
다들 스프링부트 프로젝트를 처음 시작할때 @SpringBootApplication를 한번씩 보셨을 것입니다.
오늘은 @SpringBootApplication에 대해서 간단히 알아보겠습니다.
@SpringBootApplication 이란?
@SpringBootAplication 어노테이션은 auto-configuration을 담당합니다.
다시 이야기 하자면 @SpringBootAplication 어노테이션으로 인해 스프링 부트의 자동 설정, 스프링 Bean 읽기와 생성이 모두 자동으로 설정됩니다.
@SpringBootAplication 어노테이션이 있는 위치부터 설정을 읽어가기 때문에 이 어노테이션을 포함한 클래스는 항상 프로젝트의 최상단에 위치해야만 합니다.
@SpringBootAplication의 내부 구조
@SpringBootAplication의 내부 구조를 간단히 살펴 보면 아래와 같습니다.
@Target({ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(
excludeFilters = {@Filter(
type = FilterType.CUSTOM,
classes = {TypeExcludeFilter.class}
), @Filter(
type = FilterType.CUSTOM,
classes = {AutoConfigurationExcludeFilter.class}
)}
)
public @interface SpringBootApplication {
...
@SpringBootApplication을 이용하면 위 코드를 보면 알 수 있듯이 세가지의 어노테이션을 포함하고 있습니다.
- @EnableAutoConfiguration
- @ComponentScan
- @SpringBootConfiguration
이 세가지의 어노테이션이 @SpringBootAplication의 특징인데 아래에서 간단히 설명하겠습니다.
@EnableAutoConfiguration – 설정 자동 등록하기
@EnableAutoConfiguration은 Spring boot의 핵심으로써, 미리 정의되어 있는 Bean들을 가져와서 등록해줍니다.
미리 정의되어 있는 Bean들은 spring-boot-autoconfigure > META-INF > spring.factories에 위치하여 있습니다.
@ComponentScan – 빈 등록하기
스프링에서 관리하는 POJO를 ‘빈(Bean)’이라고 합니다.
@ComponentScan은 현재 패키지 이하에서 아래와 같은 어노테이션이 붙어 있는 클래스들을 찾아서 빈으로 등록하는 역할을 합니다.
@Component
@Configuration
@Repository
@Service
@Controller
@RestController
@SpringBootConfiguration - @Configuration의 용도
@Configuration은 spring 에 빈 팩토리를 위한 오브젝트를 설정을 담당하는 클래스라고 인식 할 수 있도록 알려주는 어노테이션입니다.
@SpringBootConfiguration은 @Configuration의 대안이라고 할 수 있습니다.
@Configuration와 거의 같은 일을 하지만 가장 큰 차이점이라고 하면 @SpringBootConfiguration을 사용하면 구성을 자동으로 찾을 수 있다는 것 입니다. 이것은 단위 또는 통합 테스트에 특히 유용 할 수 있습니다.
참고자료
스프링 부트와 AWS로 혼자 구현하는 웹 서비스 -이동욱 지음
https://seongmun-hong.github.io/springboot/Spring-boot-EnableAutoConfiguration
https://www.baeldung.com/springbootconfiguration-annotation
'Spring' 카테고리의 다른 글
[Spring] @Controller와 @RestController의 차이 (0) | 2020.07.20 |
---|---|
[Spring][IoC] IoC(Inversion of Control) 제어의 역전 (0) | 2020.06.12 |
[Spring] Spring boot 프로젝트의 구조 (0) | 2020.06.12 |
[Spring][Java] DAO (Data Access Object) (0) | 2020.05.19 |