Spring 어노테이션 모음집

adam2·2020년 4월 30일
0
post-thumbnail

자바 메타 어노테이션

@Retention

  • 해당 애노테이션이 언제까지 유지할지 알려주는 애노테이션이다.
  • 자기 자신이 어느 시점까지 유효한지를 명시해줘야한다.
    @Retention(RetentionPolicy.RUNTIME)
  • RetentionPolicy.SOURCE : 컴파일 전까지만 유효. (컴파일 이후에는 사라짐)
  • RetentionPolicy.CLASS : 컴파일러가 클래스를 참조할 때까지 유효.
  • RetentionPolicy.RUNTIME : 컴파일 이후에도 JVM에 의해 계속 참조가 가능. (리플렉션 사용)

@Target

  • 어노테이션이 적용할 위치를 선택합니다.
  • 어노테이션이 생성될 수 있는 위치를 지정한다.

ElementType.PACKAGE : 패키지 선언
ElementType.TYPE : 타입 선언
ElementType.ANNOTATION_TYPE : 어노테이션 타입 선언
ElementType.CONSTRUCTOR : 생성자 선언
ElementType.FIELD : 멤버 변수 선언
ElementType.LOCAL_VARIABLE : 지역 변수 선언
ElementType.METHOD : 메서드 선언
ElementType.PARAMETER : 메소드의 파라미터로 선언된 객체에서만 사용 가능
ElementType.TYPE_PARAMETER : 전달인자 타입 선언
ElementType.TYPE_USE : 타입 선언

Spring Mvc

@Controller

  • spring의 controller를 의미한다
  • controller를 사용하면 @RequestMapping등의 추가적인 어노테이션을 사용할 수 있게 된다.

@RestController

  • @Controller + @ResponseBody
  • controller중 view로 응답하지 않는 컨트롤러를 의미한다.
  • HttpResponse로 바로 응답이 가능하다. (@ResponseBody의 역할을 자동적으로 해줌)

@RequestMapping

  • http request 라우팅 어노테이션. 요청 형식을 정의하지 않으면 default는 GET이다.
  • 다양한 사용방법

@RequestMapping(value = "/ex/foos", method = RequestMethod.GET)

@GetMapping

@PathVariable

  • @PathVariable를 사용하면 URL에서 파라미터를 보내서 사용 할 수 있다.
@GetMapping("/api/v1/theater/{id}")
    public TheaterResponseDto findById(@PathVariable Long id) {
        return theaterService.findById(id);
    }

@RequestParam

// 127.0.0.1?no=123

@GetMapping("read")
public ModelAndView getFactoryRead(@RequestParam("no") int factroyId, SearchCriteria criteria) 
{
  //...    
}

@RequestBody

  • http request body를 자바 객체로 변환한다
@PutMapping("/api/v1/theater/{id}")
    public Long update(@RequestBody TheaterRequestDto request, @PathVariable Long id) {
        return theaterService.update(id, request);
    }

스프링 기타 어노테이션

@Value

  • 프로퍼티의 키를 사용하여 특정 값을 호출할 수 있다.
@Value("${property.test.url}")
private String url;

Spring Security Test

@WithMockUser(roles="")

  • 인증된 가짜 유저를 만들어 사용
  • 권한을 가진 사용자가 API를 요청하는 것과 동일한 쵸과
  • MockMvc에서만 작동한다
profile
개발의 'ㄱ'을 알아가고 있습니다.😊🤞

0개의 댓글