by-nc-sa     개발자, DBA가 함께 만들어가는 구루비 지식창고!

Spring MVC 어노테이션




Spring 어노테이션 정리

Spring MVC

@MVC

  • 어노테이션을 중심으로 한 새로운 MVC의 확장 기능은 @MVC라는 별칭으로도 불린다 (= 어노테이션 기반 MVC)

@Controller

  • 해당 클래스가 Controller Bean 임을 지정한다.

@RequestMapping

  • 처리할 요청 URL을 지정한다.
  • 실제 요청 URL 은 class의 @RequestMapping값과 메서드의 @RequestMapping값의 조합으로 지정된다.
    @RequestMapping(value="/article/form",method="RequestMethod.GET")
    @RequestMapping(value="/article/write",method="RequestMethod.POST")
    

@PathVariable

  • URL에 {}로 들어가는 패스 변수를 받는다
  • URL의 특정위치에 파라미터 값을 넣게 하면, 이해하기 쉬운 URL을 만들 수 있다. (RESTFull)
@RequestMapping(value = "/article/view/{articleId}", method = RequestMethod.DELETE)
@ResponseBody
public ModelAndView view(@PathVariable(value = "articleId") int articleId) {
       articleBO.getArticle(articleId);
       ..
}

@RequestParam

  • 단일 HTTP 요청 파라미터의 값을 메소드 파라미터에 넣어주는 어노테이션이다.
  • 해당 파라미터가 반드시 있어야 한다. 없다면 HTTP 400 - Bad Request를 받게 된다
  • 파라미터를 필수가 아니라 선택적으로 제공하게 하려면, required 엘리먼트를 false 로 설정한다
public String view(@RequestParam("id") int id) { .. }
public String view(@RequsetParam(value="id", required=false, defaultValue="-1") { .. }  
  • @RequestParam 에 파라미터 이름을 지정하지 않고 Map<String,String>타입으로 선언하면 모든 요청 파라미터를 맵으로 받을 수 있다
public String add(@RequestParam<String, String> params) { .. } 

@ModelAttribute

  • 요청 파라미터를 Object(모델객체) 형태로 Controller에서 전달 받을 수 있다.

@RequestBody

  • http의 Body를 그대로 전달한다.
  • xml, json 기반의 메시지를 사용하는 경우 유용하다.
public void message(@RequstBody String body) { ... }

@Valid

  • 요청된 파라미터를 모델 클래스에 셋팅하면서 해당 값에 대한 유효성 체크를 함께 할 수 있다.
  • JSR-303의 @javax.validation Valid 애노테이션 사용

@CookieValue

  • @CookieValue를 이용하여 쿠키값을 얻어 올 수 있다.
  • @CookieValue을 메소드 파라미터에 추가하면 쿠키값을 바인드하여 넘겨준다.
    @RequestMapping(value = "/write", method = RequestMethod.POST)
    public ModelAndView write(@Valid Article article, BindingResult result,
            @CookieValue(value = "LOGIN_KEY", required = false) int empno) {
    
    ...        
    }

Spring

@Scope

  • Spring 에서 관리하는 Bean은 싱글턴 상태가 디폴트이다.
  • 디폴트 및 singleton : 싱글턴으로 객체를 한개만 생성
  • prototype : 사용자 요청별로 별개의 객체를 생성해서 할당

@Autowired

  • Bean의 자동삽입을 위해 사용하는 애노테이션이다.

@Service

  • 해당 클래스가 Service Bean 임을 지정한다.

@Repository

  • 해당 클래스가 Repository Bean 임을 지정한다.

문서정보

Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.