Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
Tags
- 스프링 부트와 JPA
- Secure Coding
- 자바연습문제
- 자바의정석
- 불친절한SQL프로그래밍
- 제네릭
- 자바공부
- Java의정석
- REGEXP_SUBSTR
- 김영한
- 스프링MVC
- 이것이자바다
- inflearn
- 인프런
- docker
- Spring
- JPA
- 스프링입문
- 자바의정석 연습문제
- 서블릿
- DispatcherServlet
- 분석함수
- Numpy
- 스프링
- java
- Python
- 불친절한 SQL 프로그래밍
- 계층 쿼리
- 시큐어코딩
- 스프링 핵심원리
Archives
- Today
- Total
Continuous Challenge
11. 스프링 MVC 기본 기능 (1) - 로깅, 요청 매핑 본문
728x90
728x90
로깅
로깅 라이브러리
스프링 부트 라이브러리를 사용하면 스프링 부트 로깅 라이브러리('spring-boot-starter-logging')가 함께 포함된다.
- SLF4J
- Logback
로그 라이브러리는 Logback, Log4J, Log4J2 등 수많은 라이브러리가 있는데 그것을 통합해서 인터페이스로 제공하는 것이 SLF4J 라이브러리이다. (쉽게 말해 SLF4J는 인터페이스이고 그 구현체로 Logback 같은 로그 라이브러리를 선택)
매핑 정보
@RestController
- @Controller는 반환 값이 String이면 뷰 이름으로 인식된다. 그래서 뷰를 찾고 뷰가 랜더링 된다.
- @RestController는 반환 값으로 뷰를 찾는 것이 아니라 HTTP 메시지 바디에 바로 입력한다. 따라서 실행 결과로 ok 메세지를 받을 수 있다.
올바른 로그 사용법
- log.debug("data="+data)
- 로그 출력 레벨을 info로 설정해도 해당 코드에 있는 "data="+data가 실제 실행이 되어 버린다. (문자 더하기 연산 발생) - log.debug("data={}", data)
- 로그 출력 레벨을 info로 설정하면 아무 일도 발생하지 않는다. (의미 없는 연산 발생X)
로그 사용 시 장점
- 로그 레벨에 따라 개발 서버에서는 모든 로그를 출력하고, 운영 서버에서는 출력하지 않는 등 로그를 상황에 맞게 조절할 수 있다.
- 쓰레드 정보, 클래스 이름 같은 부가 정보를 볼 수 있고, 출력 모양을 조정할 수 있다.
- 시스템 아웃 콘솔에만 출력하는 것이 아니라 파일이나 네트워크 등 로그를 별도의 위치에 남길 수 있다.
특히 파일로 남길 때는 일별, 특정 용량에 따라 로그를 분할하는 것도 가능하다. - 성능도 일반 System.out 보다 좋다. (내부 버퍼링, 멀티 쓰레드 등)
요청 매핑
HTTP 메서드 매핑
@RequestMapping(value = "/mapping-get-v1", method = RequestMethod.GET)
public String mappingGetV1() {
log.info("mappingGetV1");
return "ok";
}
HTTP 메서드 매핑 축약
@GetMapping(value = "/mapping-get-v2")
public String mappingGetV2() {
log.info("mapping-get-v2");
return "ok";
}
PathVariable(경로 변수) 사용
@GetMapping("/mapping/{userId}")
public String mappingPath(@PathVariable("userId") String data) {
log.info("mappingPath userId={}", data);
return "ok";
}
최근 HTTP API는 다음과 같이 리소스 경로에 식별자를 넣는 스타일을 선호한다.
/mapping/userA, /users/1
@RequestMapping 은 URL 경로를 템플릿화 할 수 있는데, @PathVariable 을 사용하면 매칭 되는 부분을 편리하게 조회할 수 있다.
@PathVariable 의 이름과 파라미터 이름이 같으면 생략할 수 있다.
PathVariable 사용 - 다중
@GetMapping("/mapping/users/{userId}/orders/{orderId}")
public String mappingPath(@PathVariable String userId, @PathVariable Long orderId) {
log.info("mappingPath userId={}, orderId={}", userId, orderId);
return "ok";
}
728x90
728x90
'Spring > Spring MVC' 카테고리의 다른 글
12. 스프링 MVC 기본 기능 (2) - HTTP 요청 (0) | 2022.05.11 |
---|---|
10. 스프링 MVC 구조 이해 (0) | 2022.05.03 |
9. MVC 프레임워크 만들기 (0) | 2022.05.01 |
8. MVC 패턴 (0) | 2022.04.27 |
7. 서블릿 (0) | 2022.04.25 |
Comments