我们的应用程序基于瘦战争概念(http://maven.apache.org/plugins/maven-war-plugin/examples/skinny-wars.html)。
.
|-- META-INF
| `-- application.xml
|-- lib
| -- core application jars
| -- spring jars
| -- common jar
|-- war1-1.0.0.war
| --war1-jar1-1.0.0.jar
`-- war2-1.0.0.war
| --war2-jar1-1.0.0.jar
我们在应用程序级别加载了 spring jar 和其他核心应用程序 jar。普通 jar 和核心应用 jar 都有自己的 applicationContext.xml。战争也有他们自己的 web-jars,其中有 applicationContext.xml 特定于每场战争。我们注意到,自动装配(在核心应用程序 jar 类中)在应用程序启动时失败,我们在随附的日志文件中看到错误。
以下是观察结果:
- 如果在应用程序级别加载的所有 jar 都移动到单独的战争(WEB-INF/lib),自动装配工作正常。
- 如果核心应用程序 jar 中的类具有公共访问器,则自动装配工作正常,这是出于安全和封装目的的默认设置。
我们必须遵循 Skinny War 的概念,并且不能修改核心应用程序 jar。