어노테션이란?
- 어노테이션은 코드에 달아두는 주석 같은 표시로, 특정 기능을 자동으로 실행하게 도와주는 역할을 합니다.
- 예를 들어, "이 클래스는 웹 요청을 처리하는 곳이야! "라고 표시하거나, "이 메소드는 부모 클래스에서 온 걸 다시 만들었어~! "라고 알려줄 때 사용합니다.
쉽게 말해서 코드에 설명을 붙여서 프로그램이 그 설명을 보고 알아서 처리하도록 하는 것! 입니다
용도:
사용처:
예시▼
@Value("${server.port}")
private int serverPort;
여기서 ${server.port}는 application.properties 파일에서 server.port 키의 값을 가져와 serverPort 변수에 할당합니다
용도:
사용처:
예시(Thymeleaf 템플릿에서) ▼
<a href="@{/home}">Home</a>
@{/home}는 /home 경로의 URL을 동적으로 생성하며, 자동으로 컨텍스트 경로가 붙습니다
용도:
사용처:
예시▼
@Controller
public class HomeController {
@GetMapping("/home")
public String home() {
return "home"; // home.html 뷰 렌더링
}
}
용도:
특징:
예시▼
@RestController
@RequestMapping("/student")
public class StudentApiController {
@PostMapping
public Student saveStudent(@RequestBody Student student) {
return studentService.save(student);
}
}
💡 즉!!
@Controller: 뷰와 데이터 모두 처리 가능
@RestController: 뷰 없이 데이터만 반환
용도:
사용처:
예시▼
@Controller
public class MyController {
@GetMapping("/hello")
public String sayHello(Model model) {
model.addAttribute("message", "Hello, Spring!");
return "hello"; // hello.html 뷰 반환
}
}
용도:
사용처:
예시▼
@PostMapping("/submit")
public String submitForm(@ModelAttribute FormData formData) {
// 폼 데이터 처리
return "result";
}
💡 즉!!
@GetMapping: 화면에 데이터를 보여줄 때 사용
@PostMapping: 폼 데이터를 처리하거나 서버로 전송할 때 사용
용도:
사용처:
예시▼
@Controller
@RequestMapping("/student")
public class StudentController {
@GetMapping("/{studentId}")
public String getStudent(@PathVariable int studentId, Model model) {
model.addAttribute("student", studentService.getStudentById(studentId));
return "studentDetail";
}
}
용도:
예시▼
@GetMapping("/student")
public String getStudent(@RequestParam("id") int studentId, Model model) {
model.addAttribute("student", studentService.getStudentById(studentId));
return "studentDetail";
}
용도:
예시▼
@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)
용도:
@PostMapping("/student")
public Student createStudent(@RequestBody Student student) {
return studentService.save(student);
}
용도:
사용처:
예시▼
@Controller
public class MyController {
@GetMapping("/student")
public String getStudent(@RequestParam("id") int studentId, Model model) {
model.addAttribute("student", studentService.getStudentById(studentId));
return "studentDetail";
}
}
용도:
예:
용도:
용도:
예:
💡 즉!! get은 속성값을 가져오고, set은 속성값을 설정하거나 수정하고, remove는 속성을 삭제하는 함수입니다
🔎 한눈에 보는 정리 요약!!!
${} : 프로퍼티 파일에서 값을 가져올 때 사용
@{} : Thymeleaf에서 동적 경로를 생성할 때 사용
@Controller : 뷰를 반환하는 컨트롤러
@RestController : JSON, XML 등의 데이터를 반환하는 컨트롤러
@GetMapping : GET 요청을 처리
@PostMapping : POST 요청을 처리
@RequestParam : 쿼리 파라미터를 매핑
@PathVariable : URL 경로의 변수를 매핑
@RequestBody : POST 요청의 Body 데이터를 객체로 변환
Model : 뷰로 데이터를 전달할 때 사용
getAttribute : 속성값을 가져올 때 사용
setAttribute : 속성값을 설정하고나 수정할때 사용
removeAttribute : 속성값을 삭제할때 사용