Annotation
프로그램 코드의 일부가 아닌 프로그램에 관한 데이터를 제공하고 코드에 정보를 추가하는 정형화된 방법
어노테이션을 사용하면 코드가 깔끔해지고 재사용이 가능하다는 장점이 있다
종류
@Controller
- Spring에서 이용될 Controller를 명시하는 어노테이션
- @RequestMapping과 같이 매핑할 URL을 통해 요청을 받는다
- VIEW를 리턴하는데 @ResponseBody를 붙이면 Body에 다른 값을 담을 수 있다
- @RestController = @Controller + @ResponseBody
@Service
- Spring에서 비지니스 로직을 처리하는 계층에 붙이는 어노테이션
@Repository
- DB관련을 처리하는 계층에 붙이는 어노테이션
- DAO쪽에 붙이는 어노테이션
@RequestMapping
- 대체로 @Controller 내부에서 사용되는 경우가 많은 어노테이션
- 속성이 하나일 때는 속성명을 생략할 수 있다 ( @GetMapping("/create") -> value 생략 )
- 컨트롤러의 클래스 레벨과 메서드 레벨로 지정할 수 있다
- 클래스 레벨로 요청 경로를 지정하면 메서드 레벨에서 지정한 경로의 기본경로로 취급된다
- 클래스 레벨의 요청 경로에 메서드 레벨의 요청 경로를 덧붙인 형태가 최종 경로가 된다.
- 요청에 대한 URL을 매핑하며 method의 방식을 지정할 수 있다
- 만약 method가 생략이 된다면 모든 메서드에 대한 요청을 받을 수 있음
- 이와 유사한 어노테이션은 이와 같다
- @GetMapping @PostMapping @PutMapping @PatchMapping @DeleteMapping
@PathVariable
- RequestMapping에 작성된 name을 통해 변수 값을 받아옴
- 예시
@GetMapping("/detail/{year}/{buyDateMonth}")
@PathVariable("year") int year,
@PathVariable("buyDateMonth") int month
@RequestParam
- QueryString과 x-www-form-urlencoded에 관한 요청을 받음
- 원래 Servlet에서는 파라미터가 String으로 넘어오지만 별도의 설정없이 타입이 변환된다
- 예시 ) @RequestParam("age") int age
@RequestBody
- Body에 대한 요청 처리
- 일반적으로 application/json에 대한 요청을 객체화시켜주는 작업
@ResposeBody
- 응답을 할 때, Body에 데이터가 담긴다는 것을 명시
@Autowired
- 의존성을 주입해 주는 어노테이션.
- 필드 주입
- 필드에 직접 @Autowired 어노테이션을 붙임
- 예시
@Autowired private MemberService memberService;
- setter 주입
- setter 메서드에 @Autowired 어노테이션을 붙임
- 예시
private MemberService memberService; @Autowired public void setMemberService(MemberService memberService){ this.memberService = memberService; }
- 생성자 주입
- 생성자 위에 @Autowired 어노테이션을 붙임
- 예시
private MemberService memberService; @Autowired public MemberController(MemberService memberService){ this.memberService = memberService; }
'Spring' 카테고리의 다른 글
[Spring] 게시판 CRUD (0) | 2024.07.22 |
---|---|
[Spring] lprod CRUD (0) | 2024.07.22 |
[Spring] 도서 관리 CRUD (2) | 2024.07.19 |
[Spring] Spring MVC (0) | 2024.07.19 |
[Spring] 프로젝트 생성 + 설정 (1) | 2024.07.19 |