问题 加载多个xml文件 跨包加载
异常 UnsatisfiedDependencyException 依赖异常
NoSuchBeanDefinitionException been定义异常
背景 : 我这边是一个maven项目 其中有一个后台线程任务main程序 这个程序是单独的一个包 以来多个层 service dao 等等
如果我要把他单独的分离出来,那么就需要解决加载到service里面的springxml文件和dao的springxml文件
首先因为加载xml只能加载一个对象 也就是说
ApplicationContext context
只能存在一个 后面一个后把前面的覆盖掉所以我们不能进行多次加载.
那么我这个后台线程又不是web项目,那么我就没有办法在web.xml进行运行时加载
最后的解决方案就是在我这个线程项目中的xml加上
<import resource="classpath*:spring*.xml" />
这个是个重点 是引用其他的包的xml 我这里使用了通配符
- 同名资源存在时,classpath: 只从第一个符合条件的classpath中加载资源,而classpath*: 会从所有的classpath中加载符合条件的资源
- classpath*:需要遍历所有的classpath,效率肯定比不上classpath,因此在项目设计的初期就尽量规划好资源文件所在的路径,避免使用classpath*来加载
- spring*.xml 是让我加载所有已spring开头的xml文件
ok这样我照样正常的在我的main中使用
ClassPathXmlApplicationContext
就可以把所有引用的xml加载进来!
下面是一些我找的参考:
ClassPathXmlApplicationContext