因为目前正在从事一个项目,项目中一个需求就是所有的功能都是插件的形式装入系统,这就需要利用Spring去动态加载某一位置下的配置文件,所以就总结了下Spring中加载xml配置文件的方式,我总结的有6种, xml是最常见的spring 应用系统配置源。Spring中的几种容器都支持使用xml装配bean,包括:
XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext
一: XmlBeanFactory 引用资源
Resource resource = new ClassPathResource("appcontext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
二: ClassPathXmlApplicationContext 编译路径
ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
// src目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext(new String[] {"bean1.xml","bean2.xml"});
// src/conf 目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");
三: 用文件系统的路径
ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml");
//使用了 classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径
ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml");
ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml");
ApplicationContext factory=new FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");
四: XmlWebApplicationContext是专为Web工程定制的。
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
五: 使用BeanFactory
BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));
reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));
BeanFactory bf=(BeanFactory)reg;
六:Web 应用启动时加载多个配置文件
通过ContextLoaderListener 也可加载多个配置文件,在web.xml文件中利用
<context-pararn>元素来指定多个配置文件位置,其配置如下:
<context-param>
<!-- Context Configuration locations for Spring XML files -->
<param-name>contextConfigLocation</param-name>
<param-value>
./WEB-INF/**/Appserver-resources.xml,
classpath:config/aer/aerContext.xml,
classpath:org/codehaus/xfire/spring/xfire.xml,
./WEB-INF/**/*.spring.xml
</param-value>
</context-param>
这个方法加载配置文件的前提是已经知道配置文件在哪里,虽然可以利用“*”通配符,但灵活度有限。
XmlBeanFactory,ClassPathXmlApplicationContext,FileSystemXmlApplicationContext,XmlWebApplicationContext
一: XmlBeanFactory 引用资源
Resource resource = new ClassPathResource("appcontext.xml");
BeanFactory factory = new XmlBeanFactory(resource);
二: ClassPathXmlApplicationContext 编译路径
ApplicationContext factory=new ClassPathXmlApplicationContext("classpath:appcontext.xml");
// src目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext("appcontext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext(new String[] {"bean1.xml","bean2.xml"});
// src/conf 目录下的
ApplicationContext factory=new ClassPathXmlApplicationContext("conf/appcontext.xml");
ApplicationContext factory=new ClassPathXmlApplicationContext("file:G:/Test/src/appcontext.xml");
三: 用文件系统的路径
ApplicationContext factory=new FileSystemXmlApplicationContext("src/appcontext.xml");
//使用了 classpath: 前缀,作为标志, 这样,FileSystemXmlApplicationContext 也能够读入classpath下的相对路径
ApplicationContext factory=new FileSystemXmlApplicationContext("classpath:appcontext.xml");
ApplicationContext factory=new FileSystemXmlApplicationContext("file:G:/Test/src/appcontext.xml");
ApplicationContext factory=new FileSystemXmlApplicationContext("G:/Test/src/appcontext.xml");
四: XmlWebApplicationContext是专为Web工程定制的。
ServletContext servletContext = request.getSession().getServletContext();
ApplicationContext ctx = WebApplicationContextUtils.getWebApplicationContext(servletContext );
五: 使用BeanFactory
BeanDefinitionRegistry reg = new DefaultListableBeanFactory();
XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(reg);
reader.loadBeanDefinitions(new ClassPathResource("bean1.xml"));
reader.loadBeanDefinitions(new ClassPathResource("bean2.xml"));
BeanFactory bf=(BeanFactory)reg;
六:Web 应用启动时加载多个配置文件
通过ContextLoaderListener 也可加载多个配置文件,在web.xml文件中利用
<context-pararn>元素来指定多个配置文件位置,其配置如下:
<context-param>
<!-- Context Configuration locations for Spring XML files -->
<param-name>contextConfigLocation</param-name>
<param-value>
./WEB-INF/**/Appserver-resources.xml,
classpath:config/aer/aerContext.xml,
classpath:org/codehaus/xfire/spring/xfire.xml,
./WEB-INF/**/*.spring.xml
</param-value>
</context-param>
这个方法加载配置文件的前提是已经知道配置文件在哪里,虽然可以利用“*”通配符,但灵活度有限。
相关推荐
一旦XML配置加载到Spring容器中,容器将根据配置创建Bean实例,并按照定义进行初始化、依赖注入,最后完成Bean的生命周期管理。 10. **实践操作**: 在实际开发中,我们可以使用Eclipse的Spring插件来简化Bean...
// 检查并重新加载XML文件 } } ``` 在`onApplicationEvent`方法中,我们可以使用Java的`File`类来监控XML文件的改动,并在文件变化时重新初始化SqlSessionFactory。 同时,提供的`industry.sql`可能是数据库初始...
在实际应用中,我们通常使用`ApplicationContext`的实现,比如`ClassPathXmlApplicationContext`,因为它可以从类路径中加载XML配置文件。 `ClassPathXmlApplicationContext`的构造函数接收XML配置文件的位置,然后...
本文将详细探讨Spring加载顺序,并结合`@PostConstruct`、`构造方法`以及`@Autowired`等关键注解进行深入解析。 首先,Spring容器在启动时会读取配置文件(如XML或Java配置类),根据配置信息创建Bean的定义。Bean...
3. 加载XML文件:`File xmlFile = new File("path_to_xml_file.xml");` 4. 解析XML文件:`Document document = saxBuilder.build(xmlFile);` 5. 遍历XML文档元素:通过`document.getRootElement()`获取根元素,然后...
相比于普通的`logback.xml`,`logback-spring.xml`在启动时会自动被Spring Boot加载,无需额外的配置。 2. **基本结构**: 一个基本的`logback-spring.xml`配置文件包括以下几个主要部分:`<configuration>`、`...
Spring Boot应用不再需要`web.xml`,而是通过`SpringApplication.run()`方法启动,自动配置和加载应用的配置。 总之,`web.xml`中的这些配置是传统Spring MVC应用初始化Spring容器的关键步骤,它们确保了Spring框架...
在Spring框架中,AOP通过代理实现,可以使用XML配置或注解进行配置。本篇文章主要聚焦于Spring AOP的XML配置通知。 **一、AOP概念解析** 1. **切面(Aspect)**:一个关注点的模块化,例如事务管理就是一个切面。...
当使用logback作为日志框架时,通常我们会将配置文件放在`src/main/resources`目录下,命名为`logback-spring.xml`,这是因为Spring Boot默认支持`logback-spring.xml`,它能与Spring的自动配置机制集成。...
本文将详细介绍如何在Spring Boot应用中加载XML配置的完整步骤。 首先,创建一个新的Spring Boot项目,例如命名为`xml`。接着,我们需要添加Web相关的依赖,以确保我们的应用可以处理HTTP请求。这可以通过在`pom....
《Spring加载RESTful服务详解及源码分析》 在当今的Web开发中,RESTful API已经成为构建可扩展、易于维护的系统的重要组成部分。Spring框架,作为Java生态系统中的中流砥柱,提供了强大的支持来实现RESTful服务。本...
通过这个配置,Spring可以管理MyBatis的SqlSession,实现数据库操作的事务控制,并且能够自动扫描和加载Mapper接口,使得SQL查询可以通过注解或者XML文件进行定义。 3. **web.xml**: 这是Web应用的部署描述符,定义...
通常,我们将Spring的配置文件(如`applicationContext.xml`)放在项目的类路径下,如`src/main/resources`目录。确保配置文件的位置在项目构建后不会变动,以便于后续的监听和加载。 其次,我们需要创建一个监听类...
首先,Spring提供了多种方式来加载多个配置文件,包括XML配置、Java配置以及基于注解的配置。在XML配置中,可以使用`<import>`标签来引入其他XML配置文件。例如,主配置文件中可以这样写: ```xml ...
1. **加载XML文件**:使用Java的DOM(Document Object Model)或SAX(Simple API for XML)库读取并解析XML文件。DOM将整个XML文件加载到内存中形成一棵树形结构,便于操作;SAX则是事件驱动的解析方式,只在遇到...
首先,我们来看一下Spring加载配置文件的基本方式。在Spring中,可以通过ApplicationContext接口的实现类,比如ClassPathXmlApplicationContext,来加载位于classpath中的配置文件。例如,创建一个...
### Struts加载Spring的方法 在Java Web开发领域中,Struts与Spring是两个非常重要的框架。Struts主要用于构建MVC架构的应用程序,而Spring则是一个轻量级的控制反转(Inversion of Control, IoC)容器,同时也提供...
总之,虽然Spring Boot主要依赖Java配置,但通过合理的使用`@ImportResource`和理解配置加载机制,我们可以灵活地在项目中融入XML配置文件,实现与Spring Boot的无缝集成。这使得我们能够在享受Spring Boot带来的...
3. 使用简化格式:Spring XML配置支持简化语法,减少子元素的使用,如将`<value>`和`<ref>`作为属性直接嵌入`<property>`和`<constructor-arg>`标签中。这有助于减少冗余代码,提高配置文件的可读性。 4. 尽量使用`...
Spring IoC 加载流程讲解 在本节中,我们将对 Spring IoC 加载流程进行详细的讲解,并探讨 IoC 思想和...通过了解 Spring IoC 加载流程,我们可以更好地理解 Spring 的核心机制,并更好地使用 Spring 框架进行开发。