Slf4j는 로깅을 위한 인터페이스이며, Spring Boot에서는 기본적으로 Logback을 사용System.out.println() 대신 로깅 라이브러리를 사용하여 다양한 로깅 기능 활용 가능TRACE > DEBUG > INFO > WARN > ERROR@Slf4j
@RestController
public class Slf4jController {
@RequestMapping("/logging")
public String logging() {
String sparta = "Sparta";
log.trace("문자 trace={}", sparta);
log.debug("문자 debug={}", sparta);
log.info("문자 info={}", sparta);
log.warn("문자 warn={}", sparta);
log.error("문자 error={}", sparta);
return "success";
}
}
log.info("문자 info " + sparta);처럼 문자열을 직접 연산하는 방식은 불필요한 연산이 발생할 수 있으므로 {}을 사용하여 변수를 삽입하는 방식이 권장됨logging.level.com.example.springbasicannotation=TRACE
trace, debug 로그는 출력되지 않음문자 info=Sparta
문자 warn=Sparta
문자 error=Sparta문자 trace=Sparta
문자 debug=Sparta
문자 info=Sparta
문자 warn=Sparta
문자 error=Sparta@Component를 포함하고 있어 Spring Bean으로 등록됨@Controller
public class ViewController {
@RequestMapping("/view")
public String example() {
return "sparta"; // View Name 반환
}
}
resources/templates/ 경로에 HTML 파일 생성ThymeleafViewResolver가 실행됨@Controller + @ResponseBody의 조합과 동일@RestController
public class ResponseController {
@RequestMapping("/string")
public String example() {
return "sparta"; // 문자열 데이터 반환
}
}
@Controller는 기본적으로 View를 반환하지만, @ResponseBody를 사용하면 데이터를 HTTP 응답 본문으로 반환함@RestController는 내부적으로 모든 메서드에 @ResponseBody를 적용함| 어노테이션 | 반환값 | 용도 |
|---|---|---|
@Controller | View Name 반환 | 템플릿 엔진 사용 |
@RestController | 데이터 반환 | REST API 개발 |
☞ @RestController는 @Controller + @ResponseBody와 동일한 역할 수행
@Component는 이러한 개념을 Spring Bean에 적용하여 관리@Component도 Spring이 관리하는 Bean으로 등록되어 유사한 개념으로 동작@Target(ElementType.TYPE)
ElementType.TYPE → 클래스, 인터페이스, Enum 등에 적용 가능ElementType.FIELD → 필드에 적용 가능ElementType.METHOD → 메서드에 적용 가능ElementType.PARAMETER → 매개변수에 적용 가능@Retention(RetentionPolicy.RUNTIME)
RetentionPolicy.RUNTIME → 런타임까지 유지되어 실행 중에도 참조 가능RetentionPolicy.SOURCE → 소스 코드에서만 유지됨, 컴파일 후 제거됨RetentionPolicy.CLASS → 클래스 파일까지 유지됨, 실행 중에는 접근 불가RetentionPolicy.RUNTIME → 런타임까지 유지됨, 실행 중에도 접근 가능@Component를 포함하고 있어 Spring Bean으로 등록됨@Controller
public class ViewController {
@RequestMapping("/view")
public String example() {
return "sparta"; // View Name 반환
}
}
resources/templates/ 경로에 HTML 파일 생성ThymeleafViewResolver가 실행됨@Controller + @ResponseBody의 조합과 동일@RestController
public class ResponseController {
@RequestMapping("/string")
public String example() {
return "sparta"; // 문자열 데이터 반환
}
}
@Controller는 기본적으로 View를 반환하지만, @ResponseBody를 사용하면 데이터를 HTTP 응답 본문으로 반환함@RestController는 내부적으로 모든 메서드에 @ResponseBody를 적용함| 어노테이션 | 반환값 | 용도 |
|---|---|---|
@Controller | View Name 반환 | 템플릿 엔진 사용 |
@RestController | 데이터 반환 | REST API 개발 |
☞ @RestController는 @Controller + @ResponseBody와 동일한 역할 수행