📝 @Slf4j란?
- 로그 인터페이스이며, Spring Boot는 기본적으로 Logback을 구현체로 사용
System.out.println()대신 로그 레벨을 관리할 수 있는log를 사용
🗒️ 예시 코드
@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);
log.info("문자 info " + sparta); // ❌ 문자열 연산 발생 (비효율)
return "success";
}
}
🔧 application.properties 설정
logging.level.com.example.springbasicannotation=TRACE
🎯 Log Level 우선순위
TRACE > DEBUG > INFO (기본) > WARN > ERROR
🧭 @Controller vs @RestController
- Annotation 기반의 Spring에서
Controller(Handler)를 만들 때 사용하는 어노테이션
1. @Controller
@Controller
public class ViewController {
@RequestMapping("/view")
public String example() {
return "sparta"; // View 이름
}
}
"sparta" → templates/sparta.html로 매핑됨📂 기본 위치: src/main/resources/templates/
<!-- sparta.html -->
<h2>Thymeleaf Template Sample</h2>
http://localhost:8080/view2. @RestController
@RestController
public class ResponseController {
@RequestMapping("/string")
public String example() {
return "sparta"; // 텍스트 그대로 응답 (View X)
}
}
http://localhost:8080/string"sparta" 문자열🔚 마무리 요약
| 구분 | @Controller | @RestController |
|---|---|---|
| 목적 | View 반환 | JSON, String 등 데이터 응답 |
| 응답 위치 | View Resolver 통해 템플릿 렌더링 | HTTP Body에 직접 전달 |
| View Resolver 작동 | O | X |
| 대표 사용 예 | 웹 화면 렌더링 (Thymeleaf, JSP) | REST API, 모바일/프론트엔드용 API |