2016-07-15 8 views
0

私たちはSpring 3上に構築された大きなアプリケーションを持っています。Spring 3 Webでは、メタデータをドキュメントとしてRequestMappingアノテーションに埋め込むことは可能ですか?

私たちはthis exampleを使ってアプリケーションのすべてのエンドポイントのレポートを作成しています。

import org.springframework.beans.factory.annotation.Autowired; 
import org.springframework.stereotype.Controller; 
import org.springframework.ui.Model; 
import org.springframework.web.bind.annotation.RequestMapping; 
import org.springframework.web.bind.annotation.RequestMethod; 
import org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping; 

@Controller 
public class EndpointDocController { 
private final RequestMappingHandlerMapping handlerMapping; 

@Autowired 
public EndpointDocController(RequestMappingHandlerMapping handlerMapping) { 
    this.handlerMapping = handlerMapping; 
} 

@RequestMapping(value="/endpointdoc", method=RequestMethod.GET) 
public void show(Model model) { 
    model.addAttribute("handlerMethods", this.handlerMapping.getHandlerMethods()); 
} 
} 

このレポートにエンドポイントに関するドキュメントが含まれている場合は、本当に役立ちます。

私の質問は:Spring 3 Web - RequestMappingアノテーションにドキュメントとしてメタデータを埋め込むことは可能ですか?

答えて

0

あなたがjavadocを見ると、その注釈がドキュメントに入れるための追加のフィールドがないことがわかります。

ただし、フィールドdocumentationを持つ@RequestMappingから継承した独自の注釈(@DocumentedRequestMapping)を作成することができます。 ハンドハンドラを使ってメソッドにアクセスし、アノテーションを取得し、フィールドを取得します。これが役立ちます。

Map<T,HandlerMethod> map = this.handlerMapping.getHandlerMethods(); 
HandlerMethod handlerMethod = map.get('some T'); 
Method annotatedMethod = handlerMethod.getMethod(); 
Annotation documentedRequestMappingAnnotation = AnnotationUtils.findAnnotation(annotatedMethod, DocumentedRequestMapping.class); 
Map<String, Object> annotationValues = Annotationutils.getAnnotationAttributes(documentedRequestMappingAnnotation); 
annotationValues.get("documentation"); 

マインドのような 何かが、これは完全にテストされていない

関連する問題