我使用Spring3.x MVC@Controller注释。我的servlet.xml有以下条目:
<context:component-scan base-package=”com.my.controllers.package”/>
我的网络应用程序,在谷歌的应用程序引擎上必须初始化&60秒内启动。由于这种类路径扫描,我的需要更长的时间(此链接解释了应用程序引擎中">减少或避免使用组件扫描"的重要性)。
我在servlet.xml 中添加了以下行
<bean id=”myComponentBean” class=”org.foo.MyComponent”/>
现在,无论我是否添加@Controller,控制器都不会被加载。任何url都会导致404。
问题:
1) 那么,如何使spring3.xMVC控制器在不依赖于共扫描的情况下表现为web控制器呢?
2) 当我向谷歌提交一个错误时,我被要求删除"组件扫描"&"使用classLoader.getResource()显式定义所需的类"。如何使用classLoader.getResource()加载mvc控制器?
p.S:应用程序引擎上的Classpath扫描存在已知问题。讨论这件事会离题。所以我跳过了细节。
您已经做对了。使用<bean class="..." />
定义控制器,并将<mvc:annotation-driven />
放入servlet配置中。就是这样!
更新:
对于一些注释(@EJB
、@PersistenceContext
等),您可能也需要<context:annotation-config />
来由spring处理。