Spring Boot에서의 부트스트랩이란?

일반적으로 부트스트랩(Bootstrap)이란 어떠한 과정이 시작되어 알아서 진행되는 일련의 과정을 의미합니다.

컴퓨터의 부팅 과정을 생각해보면 이해가 쉬울것입니다.

우리가 컴퓨터 전원을 켜게 되면 일반적으로 다음과 같은 작업이 내부적으로 진행이 됩니다

  • 전원을 켜면 컴퓨터 전원이 잘 공급되는지를 확인한다.
  • 중앙 처리 장치의 상태를 점검한다.
  • ROM에서 컴퓨터의 입출력 장치 및 램과 같은 주요 기본 장치들에 대한 정보를 읽어들여서 정상 동작 유무를 확인한다.
  • 운영체제를 램으로 읽어 들여서 실행한다.

 

Spring Boot에서의 부트스트랩도 컴퓨터 부팅 과정과 유사합니다. 

Spring Boot 애플리케이션이 실행이 되면, 클라이언트가 사용 가능한 애플리케이션으로 동작하기 위한 사전 작업을 거치게 됩니다.

Spring Boot 애플리케이션을 어떻게 부트스트랩 시킬 수 있을까요?

[코드 1-1]

1
2
3
4
5
6
7
@Configuration
@EnableAutoConfiguration
public class CoffeeApplication  {
    public static void main(String[] args) {
     SpringApplication.run(CoffeeApplication.class, args);
    }
}
 
cs

대부분의 Spring Boot 애플리케이션은 [코드 1-1]과 같이 run() 메서드를 호출해서 부트스트랩을 진행할 수 있습니다.

 

[코드 1-2]

1
2
3
4
5
6
7
8
9
@Configuration
@EnableAutoConfiguration
public class CoffeeApplication  {
    public static void main(String[] args) {
         SpringApplication application = new SpringApplication(CoffeeApplication.class);
        // 애플리케이션 설정 커스터마이징..
        application.run(args)
    }
}
 
cs

[코드 1-2]와 같이 애플리케이션 부트스트랩 전에 애플리케이션 설정을 커스터마이징 할 수도 있습니다.

 

Spring Boot에서는 부트스트랩 과정에서 어떤 일이 일어날까요?

  • 클래스 패스 내에서 ApplicationContext 인스턴스를 생성한다.
  • 커맨드라인 매개 변수들을 Spring의 프로퍼티로 구성하기 위해 CommandLinePropertySource를 등록한다.
  • 모든 싱글톤 bean들을 로드한 후, 애플리케이션 컨텍스트를 갱신한다.
  • CommandLineRunner bean들이 존재한다면 트리거(Trigger) 시킨다.

'Java Backend 개발자 되기 > Spring Boot' 카테고리의 다른 글

@SpringBootApplication 의 역할  (0) 2022.04.12

[코드 1-1]

@SpringBootApplication
public class CoffeeApplication {

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

}

[코드 1-1]과 같이 Spring Boot Application 클래스에 @SpringBootApplication 애너테이션을 추가하면 기본적으로 해당 애플리케이션이 Spring Boot 기반의 애플리케이션으로 동작하도록 해줍니다.

 

그렇다면 @SpringBootApplication 은 내부적으로 어떤 기능을 하는 걸까요?

@SpringBootApplication 은 다음과 같은 세 가지 기능을 활성화 하는데 사용됩니다.

  • @EnableAutoConfiguration
    • Spring Boot의 자동 구성 메카니즘을 활성화합니다.
  • @ComponentScan
    • 애플리케이션 내의 패키지에서 @Component 애너테이션이 붙은 클래스들에 대한 스캐닝을 활성화합니다.
  • @SpringBootConfiguration
    • Spring Context에 Bean을 추가적으로 등록하거나 Configuration 클래스를 추가적으로 임포트 하는 기능을 활성화합니다.
    • Spring Boot의 @*Test 애너테이션을 사용해서 테스트를 진행할 경우,  자동으로 @SpringBootConfiguration을 검색합니다.

 

@SpringBootApplication 을 무조건 붙여야 하는것은 아니며, [코드 1-2]와 @SpringBootApplication 이 지원하는 세 가지 기능을 개별적으로 적용할 수 있습니다.

[코드 1-2]

@SpringBootConfiguration(proxyBeanMethods = false)
@EnableAutoConfiguration
@Import({ CoffeeConfiguration.class, MemberConfiguration.class })
public class CoffeeApplication {

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

}

+ Recent posts

출처: http://large.tistory.com/23 [Large]