如何使用Spring中的@ImportResource批注从类路径加载多个配置文件

时间:2014-12-03 07:43:22

标签: java spring-mvc

我不知道,如何使用@ ImportResource在spring中从classpath加载多个配置文件。我已经通过链接Spring 3 @ImportResource with multiple files但到目前为止没有运气。我的代码如下。

@Configuration
@PropertySource("classpath:apis.application.properties")
@ComponentScan(basePackages = {"org.surfnet.oaaas.resource", "org.surfnet.oaaas.service"})
@ImportResource({"classpath:spring-repositories.xml,classpath:commonApplicationContext.xml"})
@EnableTransactionManagement
public class SpringConfiguration {

}

我面临的例外是

java.io.FileNotFoundException: class path resource [spring-repositories.xml,classpath:commonApplicationContext.xml] cannot be opened because it does not exist
    at org.springframework.core.io.ClassPathResource.getInputStream(ClassPathResource.java:157)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:328)
    at org.springframework.beans.factory.xml.XmlBeanDefinitionReader.loadBeanDefinitions(XmlBeanDefinitionReader.java:302)

当我尝试加载单个文件时,如下所示。它适用于两个文件。但我不能在java类中包含两个ImportResource注释。

    @ImportResource("classpath:spring-repositories.xml"})

2 个答案:

答案 0 :(得分:4)

您使用的语法错误。仔细查看在您链接的问题中如何完成。

有两个字符串,而不是一个包含以逗号分隔的名称的字符串:

@ImportResource({"classpath:spring-repositories.xml", "classpath:commonApplicationContext.xml"})

答案 1 :(得分:2)

但你是对的:)这与ComponentScan类似:

@ImportResource({"classpath:spring-repositories.xml","classpath:commonApplicationContext.xml"})

在{}中定义资源时,将每个资源放在单独的String中,可选择使用file:,classpath:prefix。

我也找到了这个堆栈页面:

Spring 3 @ImportResource with multiple files