이 글은 정보 공유 글이 아닌 스프링 공부하면서 자주 사용할 것 같은 키워드 정리이다. 자세한 설명은 노션에 정리해 두었고 내가 나중에 오랜만에 스프링 할 때 기억 안 날 경우에 사용하기 위해 작성하는 글이다.
@slf4j
클래스에 선언하고 log.trace(적고싶은 메시지), log.debug, info, warn, error로 작성
문자열은 + 연산이 아닌 ("my log {}",message) 와 같이 작성. 스프링 설정에 logging.level.hello.springmvc=하고 출력 로그 레벨 작성
httpmethod
@GetMapping 같은 것에 consume, produces 속성 매핑 가능. 각각 request 헤더의 content-tpye, accept와 일치해야 한다.
@RequestMapping({,})해서 url 여러 개 매핑 가능.
@PathVariable
컨트롤러의 매개 변수에 작성한다. url에 "/teho/{postId}"와 같이 postId의 값을 받아온다. 여러 개도 가능
@RequestParam
컨트롤러의 매개 변수에 작성한다. get이나 post 방식으로 넘어오는 데이터를 받는다. get은 url에 teho.com/?name=teho의 name, post에서는 form 데이터에서 넘어오는 데이터를 받는다. 프런트에서의 name 속성과 변수 명을 같게 설정해 주면 생략 가능. (가독성을 생각하면 사용하면 좋기도 하고 선택.) required 속성 default값은 true여서 컨트롤러에 있는 값이 안 넘어오면 에러. 속성 값을 false로 바꿔 주면 안 넘어와도 된다. 이 경우 안 넘어온 변수는 null 값이 들어간다.(requried에서는 "" 같은 빈 문자열도 값이 있다고 판단한다.)
defaultvalue속성은 값이 안넘어올 경우 사용할 값을 지정한다. (defaultvalue에서는 ""를 값이 없다고 판단하고 default값을 사용한다.)
Map을 이용해서 한번에 모든 요청 파라미터를 받아올 수 있다. ex) @RequestParam Map<String,Object> paramMap
여기서 paramMap.get("이름!")해서 사용.
@ModelAttribute
역시 요청 파라미터를 받는데 우리가 생성한 객체를 매개 변수로 사용하면 알아서 객체에 값 넣어서 만들어준다.
또한 Model model 선언해서 model.addAttribute() 해주는 것도 해준다. 매개 변수 클래스명의 첫 글자를 소문자로 바꿔서 생성! ex) @ModelAttribute Item item 이면 model.addAttribute(”item→이게 소문자로 바꾼거”,item)
@RequestParam과 @ModelAttribute는 생략 가능하다.
@RequestBody
http message의 body에 담겨온 메시지를 꺼낸다. servlet을 사용해 request에서 값을 꺼내는 것을 대신 해주는 기능이다. (@RequestBody를 사용하지 않고 httpentity를 사용해서 받을 수 도있다.) string이면 string, json이면 objectMapper,httpentity를 사용해서 받을 수도 있고 바로 객체를 매개변수에 작성하면 알아서 매핑해준다.
이건 생략하면 안된다. 생략 시 spring이 @RequestParam이나 @ModelAttribute를 사용한다.
@ResponseBody
return에 작성한 값을 응답 메시지 바디에 담아준다. 상태 코드를 포함하려면 @ResponseStatus()를 같이 사용하자. 이 방법을 사용하지 않고 상태 코드를 직접 사용하려면 @ResponseBody를 사용하지 않고 httpentity를 사용해 return하면 된다. json을 반환할 때는 객체를 return해도 된다.
@RestController
일반 @Controller는 return이 view와 연결 된다. @ResponseBody를 사용하면 return이 http 응답 메시지 바디에 담겨 가는데 @RestController는 @Controller 클래스에 @ResponseBody를 합친 것이다.
@data
@data는 @toString + @getter + @setter + @RequiredArgsConstructor + @EqualsAndHashCode을 합쳐 놓은 것이다. setter가 자동 생성되므로 엔티티 같은 경우 사용을 주의해야 한다.
@service
해당 클래스가 서비스의 역할을 담당하는 것을 보여주고 @componentscan을 포함하고 있어 자바 빈으로 관리된다.
'Spring' 카테고리의 다른 글
Spring Builder 패턴 제대로 알고 어노테이션 사용하기 (@AllArgsConstructor, @NoArgsConstructor가 필요한 이유) (1) | 2024.03.12 |
---|---|
@ModelAttribute, @SessionAttribute name 속성 차이 (0) | 2023.09.26 |
[Spring JPA] 영속성 컨텍스트 완벽 이해!, 연관 관계 주인 mapping (cascade와 차이?) (0) | 2023.03.30 |
[Spring] JPA란? (간단정리) (0) | 2023.02.04 |
[Spring] @JoinColumn & 연관관계 맵핑 @Mappedby (외래키 주인? 연관관계 주인?) (1) | 2023.01.13 |