SpringBoot

SpringApplication 클래스

Jungsoomin :) 2020. 10. 3. 16:46
  1. 기본 log 는 INFO 레벨 (vm 환경설정에서 -Ddebug 설정시 디버그 로깅으로 자동설정 확인가능 ) 
  2. 배너 
  • banner.txt || gif || jpg || png  실행시 배너 로고 바꾸는...
  • application.properties > spring.banner.location 에서 설정가능(classpath 기준)
  • 배너를 끄고 싶다면 SpringApplication 에 setBannerMode() 에 상수로 OFF 를 주면 됨

 


이벤트 기반으로 리스너를 등록하고 싶다

 

ApplicationListener 구현 클래스 사용

 

이 때 기준은 2가지

  1. Application 이 구동되기 전 : SpringApplication 메서드에 등록
  2. Application 이 구동된 후 : Spring Bean 으로 등록

@SpringBootApplication
@RestController
public class StudyApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(StudyApplication.class);
        application.addListeners(new ApplicationListener());
        application.run(args);
    }
}
    
    

public class ApplicationListener implements org.springframework.context.ApplicationListener<ApplicationStartingEvent> {
    @Override
    public void onApplicationEvent(ApplicationStartingEvent applicationStartingEvent) {
        System.out.println("=============================");
        System.out.println("Application is Starting");
        System.out.println("=============================");
    }
}

@SpringBootApplication
@RestController
public class StudyApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(StudyApplication.class);
        application.run(args);
    }
 }


@Component
public class ApplicationListener implements org.springframework.context.ApplicationListener<ApplicationStartedEvent> {

    @Override
    public void onApplicationEvent(ApplicationStartedEvent applicationStartedEvent) {
        System.out.println("=============================");
        System.out.println("Application is Started");
        System.out.println("=============================");
    }
}

Spring Application 의 WebApplicationType

 

@SpringBootApplication
@RestController
public class StudyApplication {

    public static void main(String[] args) {
        SpringApplication application = new SpringApplication(StudyApplication.class);
        
        // Spring WebMvc , WebFlux 존재시 WebMvc 로 동작함!
        application.setWebApplicationType(WebApplicationType.SERVLET); // webMvc 존재시 설정됨
        application.setWebApplicationType(WebApplicationType.REACTIVE); // webFlux 존재시 설정됨
        application.run(args);
    }

}

Application Argument

-D : VM 옵션

-- : 프로그램 아규먼트

 

Application Argument빈으로 등록되어 있으므로 가져다 쓰면된다.

@Component
@Order(0)
public class ApplicationRunner implements org.springframework.boot.ApplicationRunner {

    // ApplicationRunner 의 재정의 메서드에는 ApplicationArgument 가 들어있다.
    @Override
    public void run(ApplicationArguments args) throws Exception {
        Arrays.stream(args.getSourceArgs()).forEach(System.out::println); // VM 옵션과 프로그램 인자가 모두 출력됨
        System.out.println(args.containsOption("foo"));// VM 옵션은 출력되지 못함.!
        System.out.println(args.containsOption("bar"));
    }
}

'SpringBoot' 카테고리의 다른 글

Profile  (0) 2020.10.04
외부설정  (0) 2020.10.03
독립적으로 실행가능한 JAR  (0) 2020.10.03
내장 웹 서버  (0) 2020.10.02
자동 설정 구현.2  (0) 2020.10.02