Spring Annotation

하마·2025년 3월 20일

Spring

목록 보기
13/22

@Slf4j


인터페이스로, Logback같은 라이브러리를 구현체로 사용한다.
로그를 출력해주는 어노테이션

  • Thread 정보, 클래스 이름과 같은 부가 정보를 함께 확인할 수 있다.
  • Log Level 설정을 통하여 Error 메세지만 출력하도록 하도록 하기도 하고 로그 메세지를 일자별로 모아서 저장하여 외부 저장소에 보관하기도 한다.
    • Log Level
      • TRACE > DEBUG > INFO > WARN > ERROR
  • application.properties에서 로그 레벨을 설정할 수 있다.
# com.example.springbasicannotation 하위 경로들의 로그 레벨을 설정한다.
logging.level.com.example.springbasicannotation=TRACE

@Controller vs @RestController

Annotation 기반의 Spring에서 Controller(Handler)를 만들 때 사용하는 어노테이션

1. @Controller


package com.example.springbasicannotation.controller;

import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;

@Controller
public class ViewController {

    @RequestMapping("/view")
    public String example() {
        // logic
        return "sparta"; // ViewName이 return
    }

}
  • View가 있는 경우에 사용한다.
    • Template Engine인 Thymeleaf, JSP 등을 사용하는 경우
  • Thymeleaf 예시
    • build.gradle에 의존성 추가
dependencies {
	...
	implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    ...
}
  • main/resources/templates 가 기본 경로로 설정된다.
    • return값이 String이면, ThymeleafViewResolver 가 해당 문자열을 View Name으로 인식함

동작 순서


2. @RestController


package com.example.springbasicannotation.controller;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class ResponseController {

    @RequestMapping("/string")
    public String example() {
        // logic
        return "sparta"; // ViewName이 return 되는게 아니라, String Data가 반환된다.
    }
    
}
  • @Controller@ResponseBody 가 추가된 어노테이션
    • 각 메소드마다 @ResponseBody 를 추가하지 않아도 됨!
  • 응답할 Data가 있는 경우에 사용한다.
  • 현재는 대부분 @RestController 를 사용하여 API가 만들어진다. (Restful API)
  • return 값으로 View를 찾는것이 아니라 HTTP Message Body에 Data를 입력한다.

@Controller@RequestBody 가 함께 사용되면
-> @RestController

동작 순서



참고자료


Spring 입문 - 4주차

  • Spring Annotaion 1강
  • Spring Annotaion 2강

0개의 댓글