【问题标题】:How to use spring mvc controllers without component-scanning?如何在没有组件扫描的情况下使用 spring mvc 控制器?
【发布时间】:2012-12-05 22:36:09
【问题描述】:

我使用 Spring 3.x MVC @Controller 注解。我的 servlet.xml 有这个条目:

<context:component-scan base-package=”com.my.controllers.package”/>

Google 应用引擎上的我的 web 应用必须在 60 秒内初始化和启动。由于这种类路径扫描,我的需要更长的时间(link explains 在应用引擎中“减少或避免使用组件扫描”的重要性)。

我将以下行添加到我的 servlet.xml

    <bean id=”myComponentBean” class=”org.foo.MyComponent”/>

现在,无论我是否添加@Controller,控制器都不会被加载。任何 url 都会导致 404。

问题:

1) 那么如何让 spring 3.x MVC 控制器在不依赖共同扫描的情况下像 web 控制器一样工作呢?

2) 当我向谷歌提交错误时,我被要求删除“组件扫描”和“使用 classLoader.getResource() 显式定义所需的类”。如何使用 classLoader.getResource() 加载 mvc 控制器?

P.S:应用引擎上的类路径扫描存在已知问题。在这里讨论这将是一个题外话。所以我跳过了细节。

【问题讨论】:

    标签: google-app-engine spring-mvc classloader spring-3 spring-annotations


    【解决方案1】:

    你已经做得对了。使用&lt;bean class="..." /&gt; 定义您的控制器并将&lt;mvc:annotation-driven /&gt; 放入您的servlet 配置中。就是这样!

    更新:

    您可能还需要&lt;context:annotation-config /&gt; 以及一些注释(@EJB、@PersistenceContext 等)才能由 spring 处理。

    【讨论】:

      猜你喜欢
      • 2020-12-13
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多