[Spring] Spring Annotation (1)

이연우·2025년 7월 22일

TIL

목록 보기
25/100

📝 @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

  • View 반환용 컨트롤러 – 템플릿 엔진(Thymeleaf, JSP 등)을 사용할 때 사용
    • View가 있는 경우에 사용
@Controller
public class ViewController {

    @RequestMapping("/view")
    public String example() {
        return "sparta"; // View 이름
    }
}
  • 반환값이 "sparta"templates/sparta.html로 매핑됨
  • ViewResolver(Thymeleaf, JSP 등)가 동작함

📂 기본 위치: src/main/resources/templates/

<!-- sparta.html -->
<h2>Thymeleaf Template Sample</h2>
  • 호출 결과: http://localhost:8080/view
  • 반환: HTML 페이지

2. @RestController

  • 데이터 반환용 컨트롤러 – API 응답(JSON, String 등) 제공 시 사용
    • 응답할 Data 가 있는 경우에 사용
@RestController
public class ResponseController {

    @RequestMapping("/string")
    public String example() {
        return "sparta"; // 텍스트 그대로 응답 (View X)
    }
}
  • ViewResolver를 사용하지 않음
  • HTTP Message Body에 직접 데이터 반환
  • REST API 서버 구축 시 주로 사용
  • 호출 결과: http://localhost:8080/string
  • 반환: "sparta" 문자열

🔚 마무리 요약

구분@Controller@RestController
목적View 반환JSON, String 등 데이터 응답
응답 위치View Resolver 통해 템플릿 렌더링HTTP Body에 직접 전달
View Resolver 작동OX
대표 사용 예웹 화면 렌더링 (Thymeleaf, JSP)REST API, 모바일/프론트엔드용 API

0개의 댓글