2017-08-28 20 views
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" /> 

所有的工作非常好 - 列表拥有所有豆类。
但我不想明确指出所有的实现。
有没有解决我的问题?

+1

您似乎有两个资源在两个单独的jar(applicationContext.xml)中具有完全相同的完全限定名。不要这样做。只能加载一个:类路径中的第一个。为您的课程和资源提供不同的名称。这就是软件包的用途。 –

+0

@JBNizet,但我的类有不同的名称:Logger1.java和Logger2.java。我认为他们在同一个包里应该不会造成问题。 – Vladimir

+1

这不是关于你的课程。这关乎你的applicationContext.xml资源。 –

回答

0

我在类路径后没有星号。我工作过的导入:

<import resource="classpath*:META-INF/applicationContext.xml"/>