0

我有 2 个使用 Spring 4.3 的 Spring MVC 应用程序。我将它们称为 app1 和 app2。

app1 工作正常。我使用 tomcat7-maven-plugin(jetty:run 目标)在 Intellij 中运行它,一切都很好。它的 WebApplicationInitializer 被发现并且运行良好。

现在在 app2 中,我将 app1 作为战争依赖项包含在内。

<dependency>
  <groupId>com.mycompany</groupId>
  <artifactId>app1</artifactId>
  <type>war</type>
</dependency>

当我运行 app2 时,也使用 tomcat7-maven-plugin (jetty:run goal) 我收到以下(众所周知的)消息:

INFO: No Spring WebApplicationInitializer types detected on classpath

我已经检查了我的目标目录和 app1 的类,包括它的 WebApplicationInitializer 都存在于展开的战争目录和生成的战争本身中。事实上,如果我把战争放到一个真正的 tomcat7 中,它加载就好了。

我也尝试添加

<context:component-scan base-package="com.mycompany.path_to_initializer"/>

到 app2 的 applicationContext。没有骰子。

关于为什么使用 tomcat7 插件不起作用的任何想法?

4

1 回答 1

0

好吧,我从来没有找到真正解决这个问题的方法,但幸运的是问题消失了。

我现在有 2 个类,它们都命名为 AppConfiguration,并且在同一个包中,它们扩展了 WebMvcConfigurationSupport。一个住在app1,另一个住在app2。

app2 版本本质上是 app1 版本的副本,用 4-5 个 bean 替换了 app2 特定的实现。当我打包应用程序并创建战争时,app2 版本会覆盖 app1 版本。

现在我在 app2 中实际拥有了一个 AppConfiguration “活”,tomcat 启动没有问题;它“找到”WebApplicationInitializer 类(仅存在于 app1 中),并加载 app2 AppConfiguration。

我不知道为什么你不能在 app1 中同时拥有 WebApplicationInitializerAppConfiguration。但由于这个解决方案对我有用,我不会再深入研究了。

我希望有一天这可以帮助那里的人...

于 2018-05-03T13:33:52.123 回答