我使用Spring 4.3有2个Spring MVC应用程序。我将它们称为app1和app2。
app1工作正常。我使用tomcat7-maven-plugin(jetty:run goal)从Intellij内部运行它,一切都很顺利。找到它的WebApplicationInitializer并运行得很好。
现在在app2中我将app1包含为战争依赖。
Variant
当我运行app2时,也使用tomcat7-maven-plugin(jetty:run goal),我得到以下(众所周知的)消息:
<dependency>
<groupId>com.mycompany</groupId>
<artifactId>app1</artifactId>
<type>war</type>
</dependency>
我已经检查了我的目标目录,app1的类,包括它的WebApplicationInitializer,都出现在爆炸的war目录和生成的war本身中。事实上,如果我把战争放在一个真正的tomcat7中,它就可以加载了。
我也尝试添加
INFO: No Spring WebApplicationInitializer types detected on classpath
到app2的applicationContext。没有骰子。
任何想法为什么这不能使用tomcat7插件?
答案 0 :(得分:0)
好吧,我从未找到解决此问题的真正的解决方案,但幸运的是问题消失了。
我现在有2个类,它们都名为AppConfiguration,并且在同一个包中,它们扩展了WebMvcConfigurationSupport。一个人住在app1,另一个住在app2。
app2版本本质上是app1版本的副本,用4-5个bean代替app2特定的实现。当我打包应用程序并创建战争时,app2版本会覆盖app1版本。
现在我在app2里面有一个“生活”的AppConfiguration,tomcat开始没有问题;它“找到”WebApplicationInitializer类(仅存在于app1中),并加载app2 AppConfiguration。
我不知道为什么你不能在app1中同时拥有WebApplicationInitializer 和 AppConfiguration。但由于这个解决方案对我有用,我不打算再挖掘。
我希望有一天能帮助那些人......