在Spring MVC中,有没有办法生成可识别的控制器和视图列表?

Lar*_*ien 30 spring-mvc

在注释驱动的Spring MVC中,有没有办法生成URL模式,动词及其映射表?就像是:

 /foo/{fooId}       | GET | FooController.get()     | jsp/foo/home.jsp      |
 /foo/{fooId}/bars/ | GET | FooController.getBars() | jsp/foo/bar/index.jsp | 
Run Code Online (Sandbox Code Playgroud)

小智 10

这对我有所帮助.在log4j.xml里面放了以下内容:

<!-- 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>
Run Code Online (Sandbox Code Playgroud)


Tom*_*eba 5

这与john fuhr提到的方法相同,只是更具体,因此您只记录URL映射,而不是Spring框架中的所有内容.我也使用log4j.properties而不是.xml,但如果你愿意,你可以将其转换.我假设你有一个名为appender的mainAppender定义.

我正在使用Spring 3.2.2.RELEASE,但它也可以与其他版本一起使用.

此记录器负责您标记的任何内容@RequestMapping:

  log4j.logger.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=INFO, mainAppender
Run Code Online (Sandbox Code Playgroud)

这是负责<mvc:resources />定义的记录器:

  log4j.logger.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping=INFO, mainAppender
Run Code Online (Sandbox Code Playgroud)

如果您遇到这种情况,您可能还想添加这两行来停止重复输出(打印同一行两次).

  log4j.additivity.org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping=false
  log4j.additivity.org.springframework.web.servlet.handler.SimpleUrlHandlerMapping=false
Run Code Online (Sandbox Code Playgroud)

这是我得到的输出的一个例子:

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'
Run Code Online (Sandbox Code Playgroud)

它并不像你所追求的那样漂亮,但它确实为你提供了前三列信息(来自你的示例表).遗憾的是,您没有获得视图名称.