0
在jar文件中有interfrace ILogger。
另一个罐子实现了ILogger。 (实施例one.jar:Logger1,two.jar:Logger2,...)
在主文件的applicationContext.xml具有行:
Spring不从JAR导入所有bean实现
<import resource="classpath:META-INF/applicationContext.xml"/>
而且每个罐具有本地的applicationContext.xml描述一个bean。
我注入所有记录implementattions:
@Autowired
List<ILogger> loggers;
但名单只有一个执行(仅Logger2)。
如果我明确表明主要的applicationContext.xml豆类:
<bean id="logger1" class="demo.Logger1" />
<bean id="logger2" class="demo.Logger2" />
所有的工作非常好 - 列表拥有所有豆类。
但我不想明确指出所有的实现。
有没有解决我的问题?
您似乎有两个资源在两个单独的jar(applicationContext.xml)中具有完全相同的完全限定名。不要这样做。只能加载一个:类路径中的第一个。为您的课程和资源提供不同的名称。这就是软件包的用途。 –
@JBNizet,但我的类有不同的名称:Logger1.java和Logger2.java。我认为他们在同一个包里应该不会造成问题。 – Vladimir
这不是关于你的课程。这关乎你的applicationContext.xml资源。 –