2011-03-10 8 views
30

En Spring MVC impulsado por anotación, ¿hay alguna forma de generar una tabla de patrones de URL, verbos y sus asignaciones? Algo como:En Spring MVC, ¿hay alguna manera de generar una lista de Controladores y Vistas reconocidas?

/foo/{fooId}  | GET | FooController.get()  | jsp/foo/home.jsp  | 
/foo/{fooId}/bars/ | GET | FooController.getBars() | jsp/foo/bar/index.jsp | 
+1

+1 gran pregunta! – Nilesh

+0

No es una respuesta, pero podría ser útil ... activar el registro de nivel de DEPURACIÓN para org.springframework (log4J config). Cuando se inicia el contenedor, obtienes una lista de patrones de URI con sus controladores y métodos coincidentes (no creo que obtienes el verbo HTTP o la ruta JSP) – nickdos

Respuesta

10

esto me ha ayudado. dentro log4j.xml poner lo siguiente:

<!-- Appenders --> 
<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out" /> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p: %c - %m%n" /> 
    </layout> 
</appender> 


<!-- 3rdparty Loggers --> 
<logger name="org.springframework.core"> 
    <level value="info" /> 
</logger> 

<logger name="org.springframework.beans"> 
    <level value="info" /> 
</logger> 

<logger name="org.springframework.context"> 
    <level value="info" /> 
</logger> 

<logger name="org.springframework.http"> 
    <level value="debug" /> 
</logger> 
    <!-- below alternate between debug and info --> 
<logger name="org.springframework.web"> 
    <level value="debug" /> 
</logger> 
+1

me funcionaron, pero ten en cuenta que esto no es todo lo que necesitas en tu archivo xml. necesita esto también ...

+0

No funciona para mí, primavera 4.0.0 – NickJ

5

Este es el mismo enfoque que John fuhr mencionado más específica, excepto por lo que sólo se conecte asignaciones de URL, no todo el marco de la primavera. También uso log4j.properties, en lugar de .xml, pero puede convertirlo si lo desea. Supongo que tiene un appender llamado mainAppender definido también.

Estoy usando Spring 3.2.2.RELEASE pero puede funcionar también con otras versiones.

Este registrador es responsable de todo lo que marque con una @RequestMapping:

log4j.logger.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=INFO, mainAppender 

Este es el registrador responsable de <mvc:resources /> definiciones:

log4j.logger.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping=INFO, mainAppender 

También puede añadir estas dos líneas para detener duplicado de salida (imprimiendo la misma línea dos veces) si experimenta eso.

log4j.additivity.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=false 
    log4j.additivity.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping=false 

Este es un ejemplo de la salida me sale:

14:29:43 INFO RequestMappingHandlerMapping.registerHandlerMethod():185 - Mapped "{[/splash],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String au.org.example.HomeController.splash(org.springframework.ui.Model) 
14:29:43 INFO RequestMappingHandlerMapping.registerHandlerMethod():185 - Mapped "{[/home],methods=[],params=[],headers=[],consumes=[],produces=[],custom=[]}" onto public java.lang.String au.org.example.HomeController.home(boolean,int,org.springframework.ui.Model) 
14:29:44 INFO SimpleUrlHandlerMapping.registerHandler():302 - Root mapping to handler of type [class org.springframework.web.servlet.mvc.ParameterizableViewController] 
14:29:44 INFO SimpleUrlHandlerMapping.registerHandler():315 - Mapped URL path [/js/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#0' 
14:29:44 INFO SimpleUrlHandlerMapping.registerHandler():315 - Mapped URL path [/images/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#1' 
14:29:44 INFO SimpleUrlHandlerMapping.registerHandler():315 - Mapped URL path [/css/**] onto handler 'org.springframework.web.servlet.resource.ResourceHttpRequestHandler#2' 

No es tan bonito como lo que está buscando, pero no le dan las tres primeras columnas de información (de su tabla de ejemplo) No obtiene los nombres de vista desafortunadamente.

Cuestiones relacionadas