복붙노트

[SPRING] 독립 실행 형 또는 내장 모드에서 스프링 부트가 실행되고 있는지 확인하는 방법은 무엇입니까?

SPRING

독립 실행 형 또는 내장 모드에서 스프링 부트가 실행되고 있는지 확인하는 방법은 무엇입니까?

JAR (독립 실행 형 Tomcat 포함) 또는 WAR (J2EE 서버) 모드에서 스프링 부트가 실행 중인지 확인하는 방법은 확실합니까?

해결법

  1. ==============================

    1.실행중인 환경을 확인하는 API가 내장되어 있지 않습니다. 아마도 가장 강력한 방법은 기본 메소드를 통해 시작하는지 또는 SpringBootServletInitializer 하위 클래스를 통해 시작하는지에 따라 애플리케이션에 다른 구성을 사용하는 것입니다. 정확히 무엇을해야하는지는 알 필요가있는 이유와 개인 취향에 달려 있습니다.

    실행중인 환경을 확인하는 API가 내장되어 있지 않습니다. 아마도 가장 강력한 방법은 기본 메소드를 통해 시작하는지 또는 SpringBootServletInitializer 하위 클래스를 통해 시작하는지에 따라 애플리케이션에 다른 구성을 사용하는 것입니다. 정확히 무엇을해야하는지는 알 필요가있는 이유와 개인 취향에 달려 있습니다.

    예를 들어 @Value 등을 사용하여 환경을 통해 쿼리 할 수있는 속성을 구성 할 수 있습니다.

    @SpringBootApplication
    public class ExampleApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(ExampleApplication.class).properties(
                    "com.example.mode:servlet-container");
        }
    
        public static void main(String[] args) throws Exception {
            new SpringApplicationBuilder(ExampleApplication.class).properties(
                    "com.example.mode:standalone").run(args);
        }
    
    }
    

    또 다른 옵션은 실행중인 모드에 따라 다른 ExampleApplication.class 외에도 구성 클래스를 제공하는 것입니다.

    @SpringBootApplication
    public class ExampleApplication extends SpringBootServletInitializer {
    
        @Override
        protected SpringApplicationBuilder configure(SpringApplicationBuilder application) {
            return application.sources(ExampleApplication.class, 
                    ServletContainerConfiguration.class);
        }
    
        public static void main(String[] args) throws Exception {
            new SpringApplicationBuilder(ExampleApplication.class,
                    StandaloneConfiguration.class).run(args);
        }
    
    }
    

    ServletContainerConfiguration이나 StandaloneConfiguration에서하는 일은 바로 여러분의 책임입니다. 예를 들어, 모드를 기억하고 알아야 할 때마다 쿼리 할 수있는 bean을 게시 할 수 있습니다.

    또 다른 옵션은 모드에 따라 다른 프로필을 활성화하는 것입니다.

  2. from https://stackoverflow.com/questions/32884708/how-to-check-if-spring-boot-is-running-in-standalone-or-embedded-mode by cc-by-sa and MIT license