Spring 使用 FileSystemXmlApplicationContext 加载 jar 包外部配置文件
项目中原本使用 ClassPathXmlApplicationContext
加载 jar 包中的配置文件,开发中使用很方便。但正式发布后配置文件的修改很麻烦,每次发布都要直接打开 jar 包手动修改。
通过使用将 ClassPathXmlApplicationContext
修改为 FileSystemXmlApplicationContext
即可加载文件系统中的配置文件。
java
ctx = new FileSystemXmlApplicationContext("/applicationContext.xml");
参数中也可以使用绝对路径。
参考
1. Spring 中 ClassPathXmlApplicationContext 类的简单使用
java
public class HelloClient {
protected static final Log log = LogFactory.getLog(HelloClient.class);
public static void main(String[] args) {
// Resource resource = new ClassPathResource("appcontext.xml");
// BeanFactory factory = new XmlBeanFactory(resource);
// 用 classpath 路径
// ApplicationContext factory = new ClassPathXmlApplicationContext("classpath:appcontext.xml");
// ApplicationContext factory = new ClassPathXmlApplicationContext("appcontext.xml");
// ClassPathXmlApplicationContext 使用了 file 前缀是可以使用绝对路径的
// ApplicationContext factory = new ClassPathXmlApplicationContext("file:F:/workspace/example/src/appcontext.xml");
// 用文件系统的路径,默认指项目的根路径
// ApplicationContext factory = new FileSystemXmlApplicationContext("src/appcontext.xml");
// ApplicationContext factory = new FileSystemXmlApplicationContext("webRoot/WEB-INF/appcontext.xml");
// 使用了 classpath:前缀,这样,FileSystemXmlApplicationContext 也能够读取 classpath 下的相对路径
// ApplicationContext factory = new FileSystemXmlApplicationContext("classpath:appcontext.xml");
// ApplicationContext factory = new FileSystemXmlApplicationContext("file:F:/workspace/example/src/appcontext.xml");
// 不加 file 前缀
ApplicationContext factory = new FileSystemXmlApplicationContext("F:/workspace/example/src/appcontext.xml");
IHelloWorld hw = (IHelloWorld)factory.getBean("helloworldbean");
log.info(hw.getContent("luoshifei"));
}
}