✅ JAR , WAR 차이
JAR
(Java Archive)
WAR
(Web Application Archive)
✅ Controller
, RestController
차이
Controller
은 View를 반환할 때 사용RestController
= @Controller + @ResponseBody@Controller 일때 -> return "ok" 일 경우 -> ok라는 view 화면을 찾음
@RestController 일때 -> return "ok" 일 경우 -> 해당 문자열을 반환
✅ 로그 출력
TRACE
> DEBUG
> INFO
> WARN
> ERROR
로그 사용 예시
@Slf4j // Slf4j 어노테이션을 사용하면 밑에처럼 log 변수를 생성하지 않아도 알아서 코드가 삽입됨
@RestController
public class LogTestController {
// private final Logger log = LoggerFactory.getLogger(getClass());
@RequestMapping("/log-test")
public String logTest(){
String name = "Spring";
System.out.println("name = " + name);
log.trace("trace log={}",name);
log.debug("debug log={}",name);
log.info(" info log={}",name);
log.warn(" warn log={}",name);
log.error(" error log={}",name);
return "ok";
}
}
로그 사용시 장점
✅ 경로 변수 사용
@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";
}
✅ 미디어 타입
consumes
-> 들어오는 데이터 타입을 정의할 때 사용 @PostMapping(value = "/mapping-consume", consumes = "application/json")
// uri를 호출하는 쪽에서 헤더에 보내는 데이터가 json 이라는 것을 명시해야함
public String mappingConsumes() {
log.info("mappingConsumes");
return "ok";
}
Accept
-> 반환하는 데이터 타입을 정의할 때 사용@PostMapping(value = "/mapping-produce", produces = "text/html")
// text/html 타입만 받아들일 수 있음
public String mappingProduces() {
log.info("mappingProduces");
return "ok";
}
✅ HTTP 요청 - 기본, 헤더 조회
@Slf4j
@RestController
public class RequestHeaderController {
@RequestMapping("/headers")
public String headers(HttpServletRequest request,
HttpServletResponse response,
HttpMethod httpMethod, // 메소드 방식
Locale locale, // 요청지역?
@RequestHeader MultiValueMap<String,String> headerMap,
// Http 쿼리 파라미터와 같이 하나의 키에 여러값을 받을 때 사용
// Ex) keyA=value1&keyA=value2 하나의 키 : keyA 여러값 : value1,value2
@RequestHeader("host") String host, // 하나의 헤더 받을 때
@CookieValue(value = "myCookie", required = false) String cookie // 쿠기값
){
log.info("request={}", request);
log.info("response={}", response);
log.info("httpMethod={}", httpMethod);
log.info("locale={}", locale);
log.info("headerMap={}", headerMap);
log.info("header host={}", host);
log.info("myCookie={}", cookie);
return "ok";
}
}