-
SpringApplication백기선(인프런 강의)/스프링 부트 개념과 활용 2020. 4. 10. 08:38반응형
스프링 부트 로그
스프링부트 기본 로그 레벨은 INFO이다.
Debug모드로 실행하게 된다면 자동설정 여부를 알 수가 있다.
스프링부트 로그 레벨 debug로 설정 FailureAnalyzer
에러가 났을 때 이쁘게 출력하게
베너
아래와 같이 resources 안에 banner.txt를 만들게 되면 수정된 배너를 출력하게 할 수 있다.
배너의 기본 출력은 기본적으로 UTF-8이다.
txt파일로 설정했을 때 txt파일로 설정 말고 아래와같이 메소드를 직설 만들어서 설정이 가능하다.
@SpringBootApplication public class SpringBootStudyApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(SpringBootStudyApplication.class); application.setBanner(new Banner() { @Override public void printBanner(Environment environment, Class<?> sourceClass, PrintStream out) { out.println("========================="); out.println("베너 테스트!"); out.println("========================="); } }); app.run(args); } }
txt파일과 메소드를 직접 만들어서할 경우
txt파일이 이김
배너에 추가될 수 있는 기능들
Application Events and Liseners
발생 시점
- 애플리케이션이 시작할때
- ApplicationContext가 만들어졌을때
- ApplicationContext refresh 되었을때
- Application이 잘 구동이 되었을 때
- 애플리케이션이 준비가 되었을 때, 에러가 발생되었을 때 등등.
SpringApplication 실행 전후 Liseners
ApplicationContext가 만들어졌는지 안되었는지가 중요
ApplicationContext를 만들기 전에 사용하는 Liseners는 @Bean으로 등록 할 수 없다.
SampleListener Class에 Bean으로 등록하지 않은 이유는 ApplicationStartingEvent의경우 Bean을 등록하는 ApplicationContext객체가 생성되기 전에 만들어주기 때문에 아래와 같이 SpringApplication.addLitener에 추가해줘야된다.
@SpringBootApplication public class SpringBootStudyApplication { public static void main(String[] args) { SpringApplication app = new SpringApplication(SpringBootStudyApplication.class); app.addListeners(new SampleListener()); app.run(args); } }
public class SampleListener implements ApplicationListener<ApplicationStartingEvent> { @Override public void onApplicationEvent(ApplicationStartingEvent event) { System.out.println("============================="); System.out.println("Application is starting"); System.out.println("============================="); } }
결과 WebApplicationType 설정
ApplicationArguments를 빈으로 등록
WebApplication의 종류
- WebApplicationType.SERVLET
- Spring MVC를 사용할 때
- Spring webflux,Spring MVC가 같이 들었을 때 SERVELT이 기본 설정으로 됨
- Servlet이 있는경우 SERVLET 타입으로 돈다.
- WebApplicationType.REACITVE
- Spring webflux를 사용할 때
- WebApplicationType.NONE
- Spring webflux,Spring MVC 이 없을 때 none으로 돔
Application Argument
Run Configurationㄴ에 들아가서 아래와 같이 설정해 준다.
-D로 시작하는 옵션은 JVM옵션이고,
--로 시작하는 옵션이 Application Argument이다.설정 arguments을 출력할 class를 만든 후 실행을하게되면 아래와같은 결과가 발생이된다.
@Component public class ArgumentTestComponent { public ArgumentTestComponent(ApplicationArguments arguments) { System.out.println("foo : " + arguments.containsOption("foo")); System.out.println("bar : " + arguments.containsOption("bar")); } }
foo, bar 출력장면 결론
--로 들어오는 옵션만 argument로 사용하는 것이다.(JVM옵션은 Application argument가 아니다.)
ApplicationRunner(추천) 또는 CommandLineRunner
애플리케이션 실행한 뒤 뭔가 실행하고 싶을 때
ApplicationRunner는 ApplicationArguments이란 타입으로 메소드를 만들어 준다.
그리고 ApplicationRunner가 여러개인 경우 @Order 어노테이션을 붙여 순서를 지정해 줄 수 있다.
@Component @Order(1) public class OrderTest1 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("======================================"); System.out.println("내가 테스트1번에서 한것이여 내가!!"); System.out.println("foo : " + args.containsOption("foo")); System.out.println("bar : " + args.containsOption("bar")); System.out.println("======================================"); } }
@Component @Order(2) public class OrderTest2 implements ApplicationRunner { @Override public void run(ApplicationArguments args) throws Exception { System.out.println("======================================"); System.out.println("내가 테스트222222번에서 한것이여 내가!!"); System.out.println("foo : " + args.containsOption("foo")); System.out.println("bar : " + args.containsOption("bar")); System.out.println("======================================"); } }
코드결과 반응형'백기선(인프런 강의) > 스프링 부트 개념과 활용' 카테고리의 다른 글
외부 설정 2부 (0) 2020.04.13 외부 설정 1부 (0) 2020.04.13 독립적으로 실행 가능한 JAR (0) 2020.04.09 내장 웹서버 응용 - 컨테이너와 포트 (0) 2020.04.08 내장 웹 서버 이해 (0) 2020.04.07