본문 바로가기
개발/spring, spring boot

[String Boot] 스프링부트를 구성하는 핵심 요소 3가지

by 가시죠 2021. 7. 10.
반응형

1. 스타터 (Starter)

스프링이 제공하는 특정 모듈을 사용 할 수 있도록 관련된 라이브러리 의존성을 해결

프로젝트에 필요한 모듈이 있으면 해당 모듈에 해당하는 스타터만 추가해주면 알아서 관련 라이브러리까지 묶어서 패키지처럼 제공해주므로, 사용자가 일일이 해당 모듈이 필요한 라이브러리를 찾아서 추가 할 필요가 없다.

"spring-boot-starter-모듈명" 형태로 구성되어 있다.

인텔리제이 에서 자동완성한 모습.. 실제로 훨씬 많은 스타터가 있다.

pom.xml 에서 웹 스타터 예시

(간단한 MVC 웹 프로젝트 시 수많은 라이브러리가 필요하나, 아래 1개의 스타터 추가로 관련 라이브러리가 패키지 형태로 자동 설정된다.)

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-web</artifactId>
</dependency>

pom 파일의 상속구조로 위 1개의 스타터로 여러 라이브러리를 쉽게 설정 해준다. pom.xml에 궁금한 스타터에 Ctrl+마우스 클릭 시  다시 해당 pom 파일이 열리며 확인가능.

 

 

아래 스프링 공식 사이트에서 스타터 목록을 볼 수 있다.

https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#using.build-systems.starters

 

 

2. 자동설정 (AutoConfiguration)

스타터를 통해 추가한 모듈을 사용 할 수 있도록 관련된 빈 설정을 자동으로 처리

스프링부트 메인 클래스의 @SpringBootApplication 어노테이션에서 모든 것이 시작된다.

소스에서 Ctrl+마우스 클릭 시 해당 소스(java)가 열리며 내용 확인이 가능하다.

SpringBootApplication.java

위 SpringBootApplication.java에서 중요한 어노테이션은 아래 3가지

  1. @SpringBootConfiguration
  2. @ComponentScan
  3. @EnableAutoConfiguration

 

@SpringBootConfiguration

기존 스프링 프레임웍에서 사용하던 환경설정 빈 클래스 표현인 @Configuration과 동일

 

@ComponentScan

@Configuration, @Repository, @Service, @Controller, @RestController가 붙은 객체를 메모리에 올리는 역할

 

@EnableAutoConfiguration

스프링부트 자동설정의 핵심 어노테이션으로 스프링 부트가 구동될때, 필요한 빈들을 자동으로 컨테이너에 등록해주는 역할을 한다.

@EnableAutoConfiguration이 등록하는 빈들의 목록은 spring-boot-autoconfigure-2.X.X.RELEASE.jar 파일에 포함되어 있다. (META-INF/spring.factories 이 파일을 참조하여 여러가지 빈을 자동으로 생성한다.)

 

 

3. 액추에이터 (Actuator)

스프링 부트로 개발된 시스템을 모니터링 할 수 있는 다양한 기능을 제공

 

반응형

댓글