所以我有一个外部xml映射文件,将在我的spring启动应用程序中加载,该文件将存储在缓存映射中。
我知道我可以这样做:
public void loadConfiguration() {
InputStream stream = ClassLoader.getSystemClassLoader().getResourceAsStream("model.xml");
DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();
DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();
Document doc = dBuilder.parse(stream);
doc.getDocumentElement().normalize();
// parse it and add to a Hashmap
由于我使用的是Spring Boot,有没有合适的弹簧方式呢?特别是将我的xml文件作为输入流加载。
答案 0 :(得分:0)
使用Spring资源抽象,例如http://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/core/io/ClassPathResource.html
答案 1 :(得分:0)
之前的答案是合适的,但我也能够这样做,因为通过创建一个包含我想声明的各种其他方法的类,并调用我可以注入对象并在我的代码的其他区域调用方法
@Component
public class ConfigManager {
private final String xmlFile = "something.xml";
@Autowired
public ConfigManager(ResourceLoader loader) {
InputStream is = loader.getClassLoader().getResourceAsStream(xmlFile);
// do something
}
}
作为spring应用程序一部分的spring类/对象ResourceLoader将通过自动装配注释注入到构造函数中。鉴于我的xml文件也在我的包中,此代码将在启动时运行并初始化