JAVA/Spring(111)
-
[SpringBoot][WebMVC] 정적 리소스 지원
1. 정적 리소스 맵핑 “/**” 기본 리소스 위치 classpath:/static classpath:/public classpath:/resources/ classpath:/META-INF/resources 예) “/hello.html” ⇒ /static/hello.html spring.mvc.static-path-pattern: 맵핑 설정 변경 가능 spring.mvc.static-locations: 리소스 찾을 위치 변경 가능 (비권장) Last-Modified 헤더를 보고 304 응답을 보냄 정적 리소스가 수정되면 200 응답을 보냄 정적 리소스가 수정되지 않은 상태에서 다시 자원을 요청시 304 응답을 보냄 304 응답을 보내면서 정적 리소스를 다시 보내지는 않음(빨리짐을 의미함) Resourc..
2022.11.09 -
[SpringBoot][WebMVC] HttpMessageConverters
HttpMessageConverters란 무엇인가? HTTP 요청 본문을 객체로 변경하거나, 객체를 HTTP 응답 본문으로 변경할 때 사용하는 컨버터 {”username” : “yonghwan”, “password” : “123”} ↔ User @RequestBody HTTP 요청 본문을 객체로 변환 @ResponseBody 객체를 HTTP 요청 본문으로 변환 컨트롤러에 @RestController가 붙어있으면 리턴 타입에 @ResponseBody를 생략할 수 있음 // before @PostMapping("/users/create") public @ResponseBody User create(@RequestBody User user){ return user; } // after @PostMapping(..
2022.11.08 -
[SpringBoot] 스프링부트 통합테스트, 단위테스트
통합테스트 @SpringBootTest 단위테스트 @JsonTest @WebMvcTest @WebFluxTest @DataJpaTest @RestClientTest 1. 통합 테스트 개요 실제 운영 환경에서 사용될 클래스들을 통합하여 테스트 단위 테스트와 같이 기능 검증을 위한 것이 아닌 스프링 프레임워크에서 전체적으로 플로우가 제대로 동작하는지 검증하기 위해 사용됨 장점 애플리케이션의 설정과 모든 빈(Bean)을 모두 로드하기 때문에 운영환경과 가장 유사항 테스트가 가능함 전체적인 플로우를 쉽게 테스트가 가능함 단점 애플리케이션의 설정과 모든 빈(Bean)을 모두 불러오기 때문에 시간이 오래걸리고 무겁다 테스트 단위가 크기 때문에 디버깅이 어려운 편 @SpringBootTest 스프링부트는 @Sprin..
2022.11.07 -
[SpringBoot] OutputCaputre 테스트 유틸리티
OutputCapture 테스트 유틸리티 OutputCaputre 테스트 유틸리티는 스프링부트가 제공하는 유틸리티로써 로그 및 콘솔에 출력되는 문자열을 캡처하는 유틸리티입니다. OutputCapture 예제 1. 컨트롤러 및 서비스 정의 @RestController public class SampleController { Logger logger = LoggerFactory.getLogger(SampleController.class); @Autowired private SampleService sampleService; @GetMapping("/hello") public String hello(){ logger.info("kim yonghwan"); return "hello " + sampleServic..
2022.11.06 -
[SprinBoot] 로거(Logger) 커스터마이징
1. 커스텀 로그 설정 파일 사용 Logback : logback-spring.xml Log4J2 : log4j2-spring.xml JUL(비추) : logging.properties Logback extension 프로파일 Environment 프로퍼티 Logback 로거의 커스텀 로그 설정 파일 사용 resources/logback-spring.xml 생성 및 파일 작성 kr.yh 패키지의 발생 로그 레벨을 DEBUG로 설정 특정한 프로파일일 때만 로그를 남기기 태그를 사용하여 특정한 프로파일일때만 사용자가 정의한 로그 설정을 활성화시킵니다. 예를 들어 dev 프로파일에서는 로그 레벨을 DEBUG 레벨로 찍을 수 있습니다. Environment Properties 태그를 사용하여 Logback의 사..
2022.11.06 -
[SprinBoot] 스프링부트 기본 로거 설정
1. 로깅 퍼사드(Logging Facade)와 로거(Logger) 로깅 퍼사드와 로거의 개념 로깅 퍼사드 : 로거 API들을 추상화 해놓은 인터페이스 로깅 퍼사드를 사용하게 되면 로거들을 바꾸어 사용할 수 있습니다. 로거 : 로깅 퍼사드를 구현한 구현체 로깅 퍼사드와 로거의 종류 로깅 퍼사드 : Common Logging, SLF4J 로거 : JUL, Log4J2, Logback 스프링부트가 사용하는 로깅 원리 스프링부트는 기본적으로 Common Logging 로깅 퍼사드를 사용함 Common Logging을 사용하는 이유는 스프링 프레임워크 코어 모듈이 개발될 당시에 SLF4J가 아직 개발되지 않았기 때문입니다. Spring5부터 SLF4J를 사용하기 위해서 Spring-JCL 모듈을 사용합니다. 그..
2022.11.06