[@Annotation]
스프링은 어노테이션이라는 일종의 메타데이터를 사용하여 특별한 기능으로 코드를 구현할 수 있다. 어노테이션을 활용하여 Spring Framework는 해당 클래스가 어떤 역할인지 정하기도 하고, Bean을 주입하거나 자동으로 getter와 setter를 생성하기도 한다.
이렇게 어노테이션을 활용하면 코드량이 감소하고 유지보수가 쉬우며 생산성이 증가한다는 장점이 있다.
[대표적인 Annotation]
@Component
개발자가 생성한 Class를 Bean으로 등록할 때 사용되는 어노테이션이다. Spring 은 해당 어노테이션을 보고 Bean으로 등록한다. 아래에 Bean에 관련한 자세한 설명이 있다!
@Bean
@Bean Annotation은 개발자가 제어가 불가능한 외부 라이브러리와 같은 것들을 Bean으로 만들 때 사용한다.
@Controller
Spring에게 해당 Class가 Controller의 역할을 한다고 명시하기 위해 사용 하는 어노테이션이다.
@RequestMapping
@RequestMapping(“/value")와 같은 형태로 작성하며, 요청 들어온 URI의 요청과 Annotation value 값이 일치하면 해당 클래스나 메소드가 실행된다. Controller 객체 안의 메서드와 클래스에 적용 가능하지만 Restfull 개발을 할 때에는 조금 더 세부적인 RequestMapping이 사용되며 그건 아래의 포스팅에서 확인할 수 있다.
- Class 단위에 사용하면 하위 메소드에 모두 적용된다.
- 메서드에 적용되면 해당 메서드에서 지정한 방식으로 URI를 처리한다.
@Controller
@RequestMapping("/board")
public class BoardController {
@RequestMapping(value = "/add", method = RequestMethod.POST)
public String add(ModelMap map, BoardDto dto, HttpSession session ) {
}
}
@ReaquestParam
URL에 전달되는 파라미터를 메소드의 인자와 매칭시켜, 파라미터를 받아서 처리할 수 있는 Annotation으로 아래와 같이 사용한다. Json 형식의 Body를 MessageConverter를 통해 Java 객체로 변환시킨다.
@PostMapping("")
public Map join(MemberDto dto, @RequestParam(required = false) MultipartFile f) {
}
@RequestBody
Body에 전달되는 데이터를 메소드의 인자와 매칭시켜, 데이터를 받아서 처리할 수 있는 Annotation으로 아래와 같이 사용한다. 클라이언트가 보내는 HTTP 요청 본문(JSON 및 XML 등)을 Java 오브젝트로 변환하여 사용한다.
클라이언트가 body에 json or xml과 같은 형태로 형태로 값(주로 객체)을 전송하면, 해당 내용을 Java Object로 변환합니다.
@PostMapping("/editinfo")
public Map<String, Object> editinfo(@RequestBody MemberDto dto) {
}
[Lombok Annotation]
@Getter : Class 모든 필드의 Getter method를 생성해준다.
@Setter : Class 모든 필드의 Setter method를 생성해준다.
@ToString : Class 모든 필드의 toString method를 생성한다.
@NoArgsConstructor : Class 기본 생성자를 자동으로 추가해 준다
@AllArgsConstructor : Class 모든 필드 값을 파라미터로 받는 생성자를 추가한다.
'spring 스프링' 카테고리의 다른 글
이클립스에 스프링 설치하고 스프링부트 프로젝트 생성 (0) | 2024.07.19 |
---|---|
[HTTP] Get 방식과 Post 방식의 차이점 (0) | 2023.09.05 |
스프링 빈(Spring Bean)이란? (0) | 2023.08.21 |
제어의 역전 (IOC, Inversion Of Control) (0) | 2023.08.20 |
[Spring Boot] 일정 주기로 실행하는 @Scheduled 사용해보기 (0) | 2023.08.15 |