SpringApplication 클래스

by

in

위치 : org.springframework.boot.SpringApplication

public class SpringApplication extends Object

설명 : 자바 main 메소드에서 스프링 애플리케이션을 부트스트랩 및 실행할 때 사용되는 클래스이며, 기본적으로 아래의 순서대로 애플리케이션을 부트스트랩 합니다.

  1. 적절한 ApplicationContext 인스턴스를 생성 (인스턴스는 클래스 경로에 종속적)
  2. CommandLinePropertySource를 등록하여 커맨드라인의 인자들을 스프링 프로퍼티로 노출시킴
  3. 모든 싱글톤 Bean을 로드하여 애플리케이션 컨텍스트를 새로 고침
  4. CommandLineRunner Bean을 트리거함

대부분의 상황에서 static run(Class, String[]) 메소드는 main 메소드에서 직접 호출되어 애플리케이션을 부트스트랩 합니다.

@Configuration
@EnableAutoConfiguration
public class MyApplication {

  // Bean 정의

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

SpringApplication을 고급 구성할 경우 실행 전에 인스턴스를 생성하고 개발자의 마음대로 바꿀 수 있습니다.

public static void main(String[] args) {
  SpringApplication application = new SpringApplication(MyApplication.class);
  // 여기서 애플리케이션 설정을 자유롭게 가능.
  application.run(args);
}

SpringApplication은 여러 곳에서 bean을 읽어올 수 있습니다. 하나의 @Configuration 클래스를 사용하여 애플리케이션을 부트스트랩하는 것을 권장합니다. 하지만 아래와 같이 다른 곳에서 bean을 읽어오는 것도 가능합니다.

  1. 정규화된 클래스 이름은 AnnotatedBeanDefinitionReader에서 불러올 수 있습니다.
  2. XML 리소스의 위치는 XMLBeanDefinitionReader에서 읽어올 수 있으며, groovy 스크립트는 GroovyBeanDefinitionReader에서 읽어올 수 있습니다.
  3. 패키지 이름은 ClassPathBeanDefinitionReader에서 읽어올 수 있습니다.

구성 속성 또한 SpringApplication에서 바인딩됩니다. 이를 통해 웹 환경(“spring.main.web-application-type=none”)을 나타내는 플래그나 배너(“spring.main.banner-mode=off”)를 끄는 플래그와 같이 추가 소스(“spring.main.sources” – a CSV 목록)와 같이 SpringApplication 속성을 동적으로 설정할 수 있습니다.

추가된 시기 : 1.0.0이 나올 때 추가됨

기여자 : Phillip Webb, Dave Syer, Andy Wilkinson, Christian Dupuis, Stephane Nicoll, Jeremy Rickard, Craig Burke, Michael Simons, Madhura Bhave, Brian Clozel, Ethan Rubinson, Chris Bono, Moritz Halbritter, Tadaya Tsuyukubo, Lasse Wulff, Yanming Zhou

중첩 클래스

변경자 및 자료형클래스설명
static classSpringApplication.AbandonedRunException실행중인 SpringApplication을 실패 없이 빠져나오는 예외처리를 다룸
static classSpringApplication.Augmented추가적인 구성을 적용해야 하는 확장된 SpringApplication을 구성하고 실행하는 데 사용됨
static interfaceSpringApplication.RunningSpringApplication.Argumated.run(String…)을 사용하여 SpringApplication을 실행의 세부 사항에 대한 액세스를 제공

필드

변경자 및 자료형클래스설명
static final StringBANNER_LOCATION_PROPERTY배너의 위치를 나타내는 속성 키
static final StringBANNER_LOCATION_PROPERTY_VALUE기본적인 배너의 위치를 나타냄

생성자

생성자설명
SpringApplication(Class<?>… primarySources)새로운 SpringApplication 인스턴스를 생성
SpringApplication(ResourceLoader resourceLoader, Class<?>… primarySources)새로운 SpringApplication 인스턴스를 생성

메소드

변경자 및 자료형메소드설명
voidaddBootstrapRegistryInitializer(BootstrapRegistryInitializer bootstrapRegistryInitializer)BootStrapRegistry를 초기화하는 데 사용 가능한 BootStrapRegistryInitializer 인스턴스를 추가
voidaddInitializers(ApplicationContextInitializer<?>… initializers)Spring의 ApplicationContext에 적용할 ApplicationContextInitializer를 추가
voidaddListeners(ApplicationListener<?>… listeners)SpringApplication에 적용하고, ApplicationContext에 등록할 ApplicationListener를 추가
voidaddPrimarySources(Collection<Class<?>> additionalPrimarySources)run(String…)이 호출될 때 ApplicationContext에 추가될 소스에 추가 항목을 추가
protected voidafterRefresh(ConfigurableApplicationContext context, ApplicationArguments args)컨텍스트가 새로 고쳐진 후 호출됨
protected voidapplyInitializers(ConfigurableApplicationContext context)새로 고치기 전에 컨텍스트에 ApplicationContextInitializer를 적용함
protected voidbindToSpringApplication(ConfigurableEnvironment environment)SpringApplication에 환경 설정을 바인드함
protected voidconfigureEnvironment(ConfigurableEnvironment environment, String[] args)configurePropertySources(ConfigurableEnvironment, String[])configureProfiles(ConfigureEnvironment, String[])에 순서대로 위임하는 템플릿 매소드
protected voidconfigureProfiles(ConfigurableEnvironment environment, String[] args)애플리케이션 환경에서 프로파일이 활성화 상태이거나 기본적으로 활성화가 되어 있는 프로파일을 설정함
protected voidconfigurePropertySources(ConfigurableEnvironment environment, String[] args)애플리케이션 환경에서 PropertySource를 추가, 제거 및 재정렬함

Leave a Reply

Your email address will not be published. Required fields are marked *