spring在org.springframework.core.io包中提供了多种配置文件加载方式。无论是XML、URL还是文件,都有很好的支持。比如基于URL的UrlResource、基于输入流的InputStreamResource、基于文件系统的FileSystemResource、基于应用classpath的ClassPathResource。开发者可以从不同位置、以不同方式加载Spring配置文件。
常用的集中配置文件加载方式:
一:XmlBeanFactory 加载方式。此方式常用于应用程序,如swt、applet等。
//基于资源文件加载: Resource resource = new ClassPathResource("appcontext.xml"); BeanFactory factory = new XmlBeanFactory(resource); //基于流文件加载: InputStream in = new FileInputStream("appcontext.xml"); BeanFactory factory = new XmlBeanFactory(in);
二:ApplicationContext加载方式。此方式常用于J2EE程序。
1 ApplicationContext context=new classPathXmlApplicationContext("classpath:appcontext.xml"); 2 BeanFactory factory = (BeanFactory)context; 3 4 // src目录下的 5 ApplicationContext context=new ClassPathXmlApplicationContext("appcontext.xml"); 6 BeanFactory factory = (BeanFactory)context; 7 8 // src/conf 目录下的 9 ApplicationContext context=new ClassPathXmlApplicationContext("conf/appcontext.xml"); 10 BeanFactory factory = (BeanFactory)context; 11 //绝对路径 12 ApplicationContext context=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml"); 13 BeanFactory factory = (BeanFactory)context;
三 : 文件系统的加载方式
1 ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml"); 2 //使用了 classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径 3 ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml"); 4 ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml"); 5 ApplicationContext factory=new FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");
四: XmlWebApplicationContext 是专为Web工程定制的。
1 ServletContext servletContext = request.getSession().getServletContext(); 2 ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );