在过去的几个月里,我一直在研究基于OSGI和Spring的应用程序,直到现在我才注意到,我没有指定要为Spring配置加载哪些XML文件。那么,Karaf是如何知道要加载哪些文件的呢?
我的项目是基于Maven的,它使用Maven捆绑包插件来构建OSGI捆绑包。由于该项目是基于maven的,所以它遵循如下简单的maven目录结构。
src/
main/java/
main/resources/ ---/here I'm keeping my XML configuratoin files.
pom.xml
Karaf在内部使用spring动态模块(spring-dm)来处理基于spring的bundle。它会查看捆绑包中的以下位置,以检查配置文件。
META-INF/MANIFEST.MF (if Spring-Context attribute is present)
META-INF/spring (if it contains XML files)
参考http://uniqueexperiments.blogspot.com/2015/09/spring-osgi-bundle-how-does-karaf-know.html
所以简单的答案是它有预定义的位置,如果你不把文件放在那里,它就不会加载它们。