백기선 (40) 썸네일형 리스트형 [Spring Boot] Spring Web MVC 1. Spring Boot MVC 자동 설정으로 제공하는 여러 기본 기능 이러한 기본 설정 덕분에 아무런 설정 파일 작성없이 Spring Web MVC 개발 가능 spring-boot-autoconfigure-xxx.jar/META-INF/spring.factories 내에 Auto Configure org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration,\ 2. Spring MVC 확장 @Configuration + WebMvcConfigurer Spring Boot가 제공하는 MVC의 기능을 다 사용하면서 추가적으로 설정을 더 하고 싶은 경우 WebMvcConfigurer가 제공하는 많은 callback method를 사용.. [Spring Boot] Spring-Boot-Devtools Spring Boot가 제공하는 optional한 tool로 아래 의존성 추가해야 함 org.springframework.boot spring-boot-devtools 캐시 설정을 개발 환경에 맞게 변경 클래스패스에 있는 파일이 변경될 때마다 어플리케이션을 자동으로 재시작 - 직접 껐다 켜는 것(cold starts)보다 빠름 - 리로딩보다는 느림(JRebel 같은 건 아님) - 리스타트하고 싶지 않은 리소스 : spring.devtools.restart.exclude - 리스타트 기능 끄기 : spring.devtools.restart.enabled=false 라이브 리로드 - 리스타트(서버 재시작) 했을 때 브라우저 자동 리프레시하는 기능 - 브라우저 플러그인 설치해야 함 - 라이브 리로드 서버 끄기.. [Spring Boot] Test 1. spring-boot-starter-test Test를 위해서는 pom.xml 내에 spring-boot-starter-test 의존성 추가 필수 -> test scope으로 추가 org.springframework.boot spring-boot-starter-test test 2. 가장 기본적인 형태의 Test code import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner; @RunWith(SpringRunner.class) @SpringBootTest public class S.. [Spring Boot] 로깅 - 커스터마이징 1. 커스터마이징한 로그 설정 파일 사용하기 Logback : logback-spring.xml Log4J2 : log4j2-spring.xml JUL : logging-properties (추천x) Logback extensions - Profile-specific Configuartion (프로파일 별 로그레벨 지정) : - Environment Properties 들도 사용 가능 : logback 설정 파일 안에서 Profile이나 Environment variable을 사용할 수 있으려면 logback.xml이 아닌 logback-spring.xml을 사용해야 함 (logback.xml은 너무 일찍 로딩이 되기 때문에 사용 불가) # logback-spring.xml # 2. 로거를 Log4j2로.. [Spring Boot] 로깅 - Spring Boot 기본 로거 설정 1. 로깅 퍼사드 VS 로거 로깅 퍼사드 - 로거 api들을 추상화해놓은 인터페이스 - 로깅 퍼사드 사용 시 로거를 바꿔낄 수 있다는 장점 - ex) Commons Logging, SLf4j 로거 - 실제 로그를 기록하는 구현체 - ex) JUL(Java Util Logging), Log4J2, Logback 2. Spring Boot는 Logback을 사용한다 Spring Boot는 기본적으로 Commons Logging을 사용 -> Spring 프레임워크의 spring-core 모듈이 만들어질 때 쯤에는 SLF4j가 없었기 때문 Commons Logging의 여러가지 문제들로 인해 구조적으로도 심플하고 더 안전한 SLF4j를 사용하게 됨 -> Spring 1.x 버전에서는 spring-core에서 C.. [Spring Boot] 프로파일 1. 프로파일 Spring Framework에서 제공해주는 기능 특정한 Profile에서만 특정한 Bean을 등록하고 싶다거나 어플리케이션의 동작을 특정 Profile에서만 다르게 하고 싶을 때 사용 # Profile("prod") @Profile("prod") @Configuration public class BaseConfiguration { @Bean public String hello() { return "hello"; } } -> 이 Bean 설정파일 자체가 "prod" 라는 profile일 때 사용이 됨 # HumanRunner @Component public class HumanRunner implements ApplicationRunner { @Autowired private String .. [Spring Boot] 외부 설정 1. 외부 설정 어플리케이션에서 사용할 여러 설정 값들을 어플리케이션의 밖이나 안에 정의할 수 있는 기능 ex) application.properties : Spring Boot가 어플리케이션을 구동할 때 자동으로 로딩하는 파일 ① src/main/resources/application.properties key-value 형태로 정의하면 어플리케이션에서 참조해서 사용할 수 있음 ② 사용 예제 -> 우선순위 15위 import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.ApplicationArguments; import org.springframework.boot.ApplicationRunner; .. [Spring Boot] ApplicationArguments / ApplicationRunner 1. ApplicationArguments Run/Debug Configurations -> Configuration -> VM options : -D로 들어옴 Run/Debug Configurations -> Configuration -> Program arguments : --로 들어옴 @Component public class ArgumentsTest { public ArgumentsTest(ApplicationArguments arguments) { System.out.println("foo: " + arguments.containsOption("foo")); System.out.println("bar: " + arguments.containsOption("bar")); } } Bean의 생성자가.. [Spring Boot] WebApplicationType 1. SERVLET Spring MVC가 있는 경우 Spring MVC, Spring WebFlux가 있는 경우 (Spring MVC가 있으면 무조건 SERVLET) 2. REACTIVE Spring MVC가 없고, Spring WebFlux만 있는 경우 3. NONE 둘 다 없는 경우 4. 둘 다 있는데 REACTIVE로 동작하게 하기 : setWebApplicationType() SpringApplication app = new SpringApplication(Application.class); app.setWebApplicationType(WebApplicationType.REACTIVE); app.run(args); https://www.inflearn.com/course/%EC%8A%A4%ED%.. [Spring Boot] Log Level # log level 아무런 옵션도 변경하지 않고 실행하게 되면 기본적으로 application의 로그 레벨은 "Info" ("Info" 레벨의 로그만 찍힘) IntelliJ 우측 상단 Edit Configurations Configuration - Environment 내에 VM options 또는 Program arguments 둘 중 하나만 입력하면 됨 VM options : -Ddebug Program arguments : --debug 이렇게 하면 debug 모드로 application이 동작하고, application 로그도 debug 레벨까지 출력함 debug 레벨로 하게 되면 어떠한 자동 설정이 적용이 됐는지, 어떠한 자동 설정이 왜 적용이 안됐는지 확인 가능 https://www.infl.. 이전 1 2 3 4 다음