본문 바로가기

백엔드 학습 과정/Section 3 [Spring MVC, JDBC, JPA, RestDo

** 참고 ** Spring MVC [ @애너테이션 정리 ] -- 추후 처리 예정

@Service

@Args ~ ~ ~

@NoArgs ~~~~

 

 

 

= 메인 클래스 애너테이션 =

@SpringBootApplication

1. 자동 구성 활성화

2. 애플리케이션 패키지 내 @Component가 붙은 클래스를 검색 후 Spring Bean으로 등록하는 기능 활성화

3. @Configuration 붙은 클래스 자동으로 찾고, 추가적으로 Spring Bean으로 등록 활성화

 

 

 

=파라미터 레벨 =

@Valid : DTO 객체를 활용하여 유효성 검증 적용하겠다는 애너테이션.

 

@Min(정수) : 뒤에 오는 long memberId 변수에 1이상의 숫자라는 제약 조건.

@RestController
@RequestMapping("/v1/members")
@Validated   // (1)
public class MemberController {
		...
		...

    @PatchMapping("/{member-id}")
    public ResponseEntity patchMember(@PathVariable("member-id") @Min(1) long memberId,
                                    @Valid @RequestBody MemberPatchDto memberPatchDto) {
        memberPatchDto.setMemberId(memberId);

        // No need Business logic

        return new ResponseEntity<>(memberPatchDto, HttpStatus.OK);
    }
}

@Max(정수)

 

 

@PathVariable() 

클라이언트의 HTTP Method URI 에 패턴 형식으로 지정된 변수의 값을 파라미터로 받을 수 있다.
()안의 내용은 메소드 레벨 애너테이션 @GetMapping의 uri와 동일한 문자열이여야 한다.

 

코드 사용 방법 : (@애너테이션("멤버변수명(단어사이-추가)") 데이터타입 멤버변수명){

@GetMapping("/{order-id}")
    public String getOrder(@PathVariable("order-id") long orderId) {
        System.out.println("# orderId: " + orderId);

        // not implementation
        return null;

위의 @PathVariable()으로 추가된 변수에 유효성 검증이 정상적으로 적용되게 하려면

Controller 클래스에 @Validated 애너테이션이 추가되야 한다.

 

 

 

@RequestParam * : 핸들러 메서드 파라미터 레벨 애너테이션

코드 사용 방법 : (@애너테이션(“멤버_변수명”) 메서드에_필요한_변수타입 변수명) {

@RequestHeader("user-agent") String userAgent,//(1)
@RequestParam("korName") String korName

 

@RequestHeader : 헤드 정보만 읽는 애너테이션.

A : 특정 헤더 정보만 읽기 : 애너테이션 뒤 (“멤버_변수명(단어사이-추가)”) (데이터타입 멤버_변수명)

@RestController
@RequestMapping(path = "/v1/coffees")
public class CoffeeController {
    @PostMapping
    public ResponseEntity postCoffee(@RequestHeader("user-agent") String userAgent,//(1)

B : 전체 헤더 정보를 map에 담아 읽기 : 애너테이션 뒤 Map <타입, 타입> Map_변수명,

@RestController
@RequestMapping(path = "/v1/members")
public class MemberController {
    @PostMapping
    public ResponseEntity postMember(@RequestHeader Map<String, String> headers

@RequestBody : JSON 형식의 Request Body(HTTP 요청 데이터)를

핸들러 메서드의 파라미터로 @RequestParam(멤버 변수)가 아닌 MembersPostDto 클래스의 객체로 변환하는 역할

= 클라이언트쪽에서 전송하는 Request Body(HTTP 메소드 내용이) 반드시 JSON 형식이어야 작동되는 코드

 

@ResponseBody : JSON 형식의 Response Body(HTTP 요청 데이터)를 클라이언트에게 전달하기 위해

DTO 객체를 Response Body로 변환하는 역할. Spriong MVC에서는 @ResponseBody를 붙이거나,

핸들러 메서드의 리턴 객체 타입이 ResponseEntity 일 경우,

내부적으로 DTO 클래스의 객체를 JSON 으로 바꿔줌.

 

=Controller 클래스 레벨=

@RestController :

해당 클래스가 REST API의 리소스 처리를 위한 API 엔드포인트로 동작함을 정의

앱 로딩시 해당 클래스 Spring Bean 등록.

@RequestMapping

클라이언트의 요청과 클라이언트 요청을 처리하는 핸들러 메서드를 매핑해주는 역할.

클래스 전체에 사용되는 공통 URL 설정.

@Validated

 

=Service 클래스 레벨 애너테이션=

@Service

Serivce 클래스를 Spring Bean으로 등록

 

=메소드 파라미터 안 변수들에 적용하는 레벨 =

@Getter

@Setter

 

=메소드 레벨=

@GetMapping

@PostMapping

@PatchMapping

@DeleteMapping

 

=DTO 객체 필드 변수 레벨=

@NotBlank (String에 한해서)

@NotSpace

@Pattern

@Email

 

 

*핸들러 메서드 : 클라이언트의 요청을 처리하기 위한 Controller 클래스의 메서드

 

<정규표현식>

1. ‘^은 문자열의 시작을 의미합니다.

2. ‘$는 문자열의 끝을 의미합니다.

3. ‘**앞에 평가할 대상이 0개 또는 1개 이상인지를 평가합니다.

4. ‘\s는 공백 문자열을 의미합니다.

5. ‘\S공백 문자열이 아닌 나머지 문자열을 의미합니다.

6. ‘??앞에 평가할 대상이 0개 또는 1개인지를 의미합니다.

7. ‘++앞에 평가할 대상이 1개인지를 의미합니다.

 

8. “^\\S+(\\s?\\S+)*$를 정규 표현식으로 추가하면

아래 예시의 문자열은 유효성 검증에 실패합니다.