Spring_자주 사용하는 어노테이션 정리

jjyu_my·2024년 10월 15일

Spring

목록 보기
2/10
post-thumbnail

어노테션이란?

  • 어노테이션은 코드에 달아두는 주석 같은 표시로, 특정 기능을 자동으로 실행하게 도와주는 역할을 합니다.
  • 예를 들어, "이 클래스는 웹 요청을 처리하는 곳이야! "라고 표시하거나, "이 메소드는 부모 클래스에서 온 걸 다시 만들었어~! "라고 알려줄 때 사용합니다.
    쉽게 말해서 코드에 설명을 붙여서 프로그램이 그 설명을 보고 알아서 처리하도록 하는 것! 입니다

📌 💲{}

용도:

  • 프로퍼티 파일에서 값을 참조

사용처:

  • 주로 application.properties나 application.yml에 정의된 값을 가져올 때 사용

예시▼

@Value("${server.port}")
private int serverPort;

여기서 ${server.port}는 application.properties 파일에서 server.port 키의 값을 가져와 serverPort 변수에 할당합니다


📌 @{}

용도:

  • URL이나 경로 값을 처리

사용처:

  • 주로 Thymeleaf 템플릿에서 URL을 동적으로 생성할 때 사용

예시(Thymeleaf 템플릿에서) ▼

<a href="@{/home}">Home</a>

@{/home}는 /home 경로의 URL을 동적으로 생성하며, 자동으로 컨텍스트 경로가 붙습니다


📌 @Controller:

용도:

  • 클래스가 Spring MVC의 컨트롤러임을 선언

사용처:

  • 클라이언트 요청을 처리하고 뷰(view)를 반환할 때 사용

예시▼

@Controller
public class HomeController {
    @GetMapping("/home")
    public String home() {
        return "home"; // home.html 뷰 렌더링
    }
}

📌 @RestController

용도:

  • API만 지원하는 컨트롤러로 JSON, XML 등의 데이터를 반환

특징:

  • @Controller와 @ResponseBody의 결합 형태로, 뷰를 반환하지 않고 데이터(JSON)를 반환

예시▼

@RestController
@RequestMapping("/student")
public class StudentApiController {
    @PostMapping
    public Student saveStudent(@RequestBody Student student) {
        return studentService.save(student);
    }
}

💡 즉!!
@Controller: 뷰와 데이터 모두 처리 가능
@RestController: 뷰 없이 데이터만 반환


📌 @GetMapping:

용도:

  • GET 요청을 처리

사용처:

  • URL 경로를 통해 화면을 노출할 때 사용

예시▼

@Controller
public class MyController {
    @GetMapping("/hello")
    public String sayHello(Model model) {
        model.addAttribute("message", "Hello, Spring!");
        return "hello"; // hello.html 뷰 반환
    }
}

📌 @PostMapping:

용도:

  • POST 요청을 처리

사용처:

  • 주로 폼 데이터 전송이나 데이터를 서버로 전달할 때 사용

예시▼

@PostMapping("/submit")
public String submitForm(@ModelAttribute FormData formData) {
    // 폼 데이터 처리
    return "result";
}

💡 즉!!
@GetMapping: 화면에 데이터를 보여줄 때 사용
@PostMapping: 폼 데이터를 처리하거나 서버로 전송할 때 사용


📌 @RequestMapping

용도:

  • 클래스 또는 메소드에 URL 경로를 매핑

사용처:

  • 주로 공통 경로를 정의하고, 그 하위의 요청을 처리할 때 사용

예시▼

@Controller
@RequestMapping("/student")
public class StudentController {
    @GetMapping("/{studentId}")
    public String getStudent(@PathVariable int studentId, Model model) {
        model.addAttribute("student", studentService.getStudentById(studentId));
        return "studentDetail";
    }
}

📌 @RequestParam:

용도:

  • URL의 쿼리 파라미터 값을 매핑

예시▼

@GetMapping("/student")
public String getStudent(@RequestParam("id") int studentId, Model model) {
    model.addAttribute("student", studentService.getStudentById(studentId));
    return "studentDetail";
}

📌 @PathVariable:

용도:

  • URL 경로에 포함된 변수 값을 매핑

예시▼

@GetMapping("/student/{id}")
public String getStudent(@PathVariable("id") int studentId, Model model) {
    model.addAttribute("student", studentService.getStudentById(studentId));
    return "studentDetail";
}

💡 즉!!
@RequestParam: 쿼리 파라미터 (e.g., /student?id=1)
@PathVariable: 경로 변수 (e.g., /student/1)


📌 @RequestBody

용도:

  • POST 요청에서 Request Body에 담긴 데이터를 객체로 변환
    사용처:
  • 주로 JSON 데이터를 받는 API에서 사용
@PostMapping("/student")
public Student createStudent(@RequestBody Student student) {
    return studentService.save(student);
}

📌 Model, ModelMap

용도:

  • 뷰로 데이터를 전달할 때 사용

사용처:

  • 컨트롤러에서 데이터를 뷰에 넘겨줄 때 사용

예시▼

@Controller
public class MyController {
    @GetMapping("/student")
    public String getStudent(@RequestParam("id") int studentId, Model model) {
        model.addAttribute("student", studentService.getStudentById(studentId));
        return "studentDetail";
    }
}

📌 getAttribute()

용도:

  • HTML 요소의 특정 속성 값을 가져올 때 사용합니다

예:

  • element.getAttribute('속성명')

📌 setAttribute()

용도:

  • 요소에 새로운 속성을 추가하거나 기존 속성 값을 변경할 때 사용
    예:
  • element.setAttribute('속성명', '값')

📌 removeAttribute()

용도:

  • 요소에서 특정 속성을 제거할 때 사용

예:

  • element.removeAttribute('속성명')

💡 즉!! get은 속성값을 가져오고, set은 속성값을 설정하거나 수정하고, remove는 속성을 삭제하는 함수입니다


🔎 한눈에 보는 정리 요약!!!

${} : 프로퍼티 파일에서 값을 가져올 때 사용
@{} : Thymeleaf에서 동적 경로를 생성할 때 사용
@Controller : 뷰를 반환하는 컨트롤러
@RestController : JSON, XML 등의 데이터를 반환하는 컨트롤러
@GetMapping : GET 요청을 처리
@PostMapping : POST 요청을 처리
@RequestParam : 쿼리 파라미터를 매핑
@PathVariable : URL 경로의 변수를 매핑
@RequestBody : POST 요청의 Body 데이터를 객체로 변환
Model : 뷰로 데이터를 전달할 때 사용
getAttribute : 속성값을 가져올 때 사용
setAttribute : 속성값을 설정하고나 수정할때 사용
removeAttribute : 속성값을 삭제할때 사용

profile

0개의 댓글