2012-05-03 3 views
14

내가 .... 스프링 프레임 워크에 새로운 오전누구나 클래스 수준 컨트롤러와 메서드 수준 컨트롤러 간의 차이점을 설명 할 수 있습니까? google..I에서 검색하는 menthod 수준에서 그것을 보여주는 클래스 수준에서 annoted @RequestMapping 한 몇 가지 예와 몇 가지 예를 발견하면서

클래스 수준의 RequestMapping을 사용하는 경우와 menthod 수준 RequestMapping 주석 ... 아무도 나에게 클래스 수준 RequestMapping과 메서드 수준 RequestMapping 사이의 차이를 설명 할 수 있습니까 ??

A) 등급 수준

b)의 ​​방법 레벨

또한

I 형 일부 @Requestmapping 발견 : GET/포스트

그래서 나는 그들의 응용 프로그램에 대한 조금 혼란 스러워요 일부 예제에는 유형 매개 변수가 없습니다.

어떤 접근 방식이 더 좋습니까?

최신 버전 (> Spring 2.5)은 요청 매핑을위한 매개 변수 유형이 필요하지 않습니까 ???

답변

16

컨트롤러는 클래스 수준에서 @Controller으로 표시되어야합니다. @RequestMapping 주석은 클래스 및 메서드 수준 모두에서 적용 할 수 있습니다. 일치하는 경우 메서드 주석은 상대 URL로 해석됩니다 (클래스 수준 URL과 관련됨). 그러나 메소드 레벨 주석이 있어야하며, 그렇지 않으면 메소드가 맵핑되지 않습니다.

주석에서 매개 변수는 기본값으로 선택적으로 표시 할 수 있습니다. 메서드 매개 변수는 기본값 인 GET이지만 명시 적으로 POST 또는 다른 것으로 설정할 수 있습니다.

참조 :

+0

패트릭 플로이드 (Patrick Floyed) : 소중한 정보에 감사드립니다 !! – JOHND

+0

나에게 설명 할 수 있다면 "메서드 주석이 상대 URL (클래스 수준 URL과 관련이있는)로 해석되지만 메서드 수준 주석이 있어야합니다. 그렇지 않으면 메서드가 매핑되지 않습니다." , 나는 너에게 감사 할 것이다! – JOHND

+11

메소드가 foo/bar보다 foo/bar가 맵핑 된 경우 주소입니다. 그러나 클래스가 baz에 매핑되고 메서드가 foo/bar에 매핑 된 경우 메서드의 주소가 baz/foo/bar 인 경우 –

-1

더 낫다 어느, 나는 우리가이 두 가지의 조합을 사용하여 생산에 말할 것 즉, 당신의 마지막 질문에 대답합니다. 예를 들어 사용자 컨트롤러가있는 경우 클래스를 "/ user"로 매핑하고 getSettings()에 대한 메소드가 "/ settings"에 매핑되고 getPermissions()에 대한 메서드는 "/ permissions"등에 매핑됩니다.

이러한 메소드를 "/ user/settings"및 "/ user/permissions"에 직접 매핑하고 클래스 매핑을 생략하십시오. 그러나 대부분 우리는 첫 번째 방법을 선호합니다.