programing

스프링 부트 시작 시간 최소화

telebox 2023. 3. 28. 21:35
반응형

스프링 부트 시작 시간 최소화

Spring Boot 프로젝트를 로드하는 데 시간이 오래 걸린다고 생각합니다.이 문제는 Spring Boot가 컴포넌트를 구성하기 때문에 발생할 수 있으며, 그 중 일부는 필요하지 않을 수도 있습니다.가장 분명한 것은 불필요한 종속성을 클래스 경로에서 제거하는 것입니다.하지만 그것만으로는 충분하지 않다.

Spring Boot에서 어떤 모듈을 구성하여 불필요한 모듈을 선택하여 비활성화할 수 있습니까?

일반적으로 Spring Boot 어플리케이션의 기동 시간을 단축하기 위해 할 수 있는 다른 방법이 있습니까?

Spring MVC, JMS, Atomicos 트랜잭션, Hibernate, JMX 지원 및 Embedded Tomcat을 통해 Restful Webservices를 사용하여 대규모(800,000줄 이상의 코드) 애플리케이션을 실행하고 있음을 알 수 있습니다.그 때문에, 애플리케이션은 약 19초 후에 로컬 데스크탑에서 기동합니다.

스프링 부트는 사용하지 않는 모듈을 설정하지 않도록 합니다.그러나 의도하지 않은 추가 종속성 및 구성을 쉽게 도입할 수 있습니다.

Spring Boot은 Configuration에 대한 표기법을 따르고 있으며 클래스 경로에 라이브러리를 배치하는 것만으로 Spring Boot에서 라이브러리를 사용하도록 모듈을 설정하려고 할 수 있습니다.또한 @RestController를 사용하여 클래스에 주석을 다는 등의 간단한 작업을 수행하면 Spring Boot이 트리거되어 Spring MVC 스택 전체가 자동 설정됩니다.

커버에서 무슨 일이 일어나고 있는지 확인하고 디버깅로깅을 활성화하려면--debug명령줄에서 응용 프로그램을 시작할 때 사용합니다.application.properties에서 debug=true를 지정할 수도 있습니다.

또, 로그 레벨을 설정할 수 있습니다.application.properties다음과 같이 심플합니다.

logging.level.org.springframework.web: DEBUG
logging.level.org.hibernate: ERROR

불필요한 자동 설정 모듈을 검출했을 경우는, 무효로 할 수 있습니다.이에 대한 문서는 http://docs.spring.io/spring-boot/docs/current-SNAPSHOT/reference/htmlsingle/ #using-boot-boot-specific-auto-configuration에서 찾을 수 있습니다.

예를 들어 다음과 같습니다.

@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class MyConfiguration {
}

도움이 될 수 있는 몇 가지 추가 팁이 있습니다.

  • 개발에 Hotspot 대신 OpenJ9 사용
  • 휴지 상태를 사용하는 경우,hibernate.ddl-auto=noneupdate
  • vmargs 설정
  • OpenJ9을 사용하는 경우 - vmargs를 다음으로 설정합니다.
  • Hotspot을 사용하는 경우 - 그래들 빌드 대신 IDE 빌드 사용
  • Tomcat 대신 Undertow 사용
  • 주석 처리 도구(지도 구조, 불변 등)를 남용하여 빌드 프로세스를 지연시키지 마십시오.

추가 정보:

글에서 권장하는 사용법@ComponentScan(lazyInit = true)로컬 개발 환경용입니다.

TL;DR

델이 실현하고 싶은 것은, 로컬 개발 환경에서만 빈의 게으른 로딩을 유효하게 해, 생산의 초기화를 적극적으로 실시하는 것입니다.사람들은 케이크도 먹을 수 없다고 하지만 봄과 함께라면 실제로 먹을 수 있다.모두 프로필 덕분이에요

@SpringBootApplication
public class LazyApplication {

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

    @Configuration
    @Profile("local")
    @ComponentScan(lazyInit = true)
    static class LocalConfig {
    }

}

언급URL : https://stackoverflow.com/questions/35709234/minimise-spring-boot-startup-time

반응형