`

spring的xml string applicationcontext实现

阅读更多
这里有两种实现方式:
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.core.io.Resource;

/**
* 字符串形式的Spring ApplicationContext实现。
* 支持动态订阅spring配置的处理
*
* @author linxuan
*
*/
public class StringXmlApplicationContext extends AbstractXmlApplicationContext {
     private Resource[] configResources;

     public StringXmlApplicationContext(String stringXml) {
          this(new String[] { stringXml }, null);
     }

     public StringXmlApplicationContext(String[] stringXmls) {
          this(stringXmls, null);
     }

     public StringXmlApplicationContext(String[] stringXmls, ApplicationContext parent) {
          super(parent);
          this.configResources = new Resource[stringXmls.length];
          for (int i = 0; i < stringXmls.length; i++) {
               this.configResources[i] = new ByteArrayResource(stringXmls[i].getBytes());
          }
          refresh();
     }

     protected Resource[] getConfigResources() {
          return this.configResources;
     }
}


另外一种:
import org.springframework.beans.BeansException;
import org.springframework.beans.factory.xml.XmlBeanDefinitionReader;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.core.io.ByteArrayResource;

import java.io.IOException;

public class StringXmlApplicationContext extends AbstractXmlApplicationContext {

    private static final String DEFAULT_CHARSET = "UTF-8";

    /**
     * 必须是UTF-8编码的XML,即XML的第一行必须是<?xml version="1.0" encoding="UTF-8"?>
     */
    private String xml;

    public StringXmlApplicationContext(String xml) {
        this.xml = xml;
        refresh();
    }

    @Override
    protected void loadBeanDefinitions(XmlBeanDefinitionReader reader) throws BeansException, IOException {
        byte[] bytes = xml.getBytes(DEFAULT_CHARSET);
        ByteArrayResource resource = new ByteArrayResource(bytes);
        reader.loadBeanDefinitions(resource);
    }

}
分享到:
评论

相关推荐

    spring配置文件:整理总结Spring中XML配

    ### Spring配置文件:整理与总结Spring中XML配置的最佳实践 #### 概述 Spring框架作为一个强大的Java应用框架,在企业级应用开发中占据了重要的地位。它为普通的Java对象(Plain Old Java Objects, POJOs)提供了...

    spring中通过ApplicationContext getBean获取注入对象的方法实例

    当Spring容器创建了一个实现了`ApplicationContextAware`的Bean时,会自动调用其`setApplicationContext`方法,传入当前的`ApplicationContext`实例。这样,我们就可以在程序中静态持有这个`ApplicationContext`,...

    ApplicationContext及它的3种实现

    Spring框架为`ApplicationContext`提供了三种实现方式,每种实现都针对不同的应用场景进行了优化: 1. **`ClassPathXmlApplicationContext`** - **应用场景**:适合于非Web环境下的应用程序,如命令行工具或桌面...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件1

    本篇文章将详细探讨如何在Spring Boot项目中读取不同路径下的`applicationContext.xml`配置文件。 首先,了解Spring Boot的核心理念是简化Spring应用程序的初始设置,它默认并不支持从XML配置文件加载bean。然而,...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件6

    在Spring Boot中读取不同路径下的`applicationContext.xml`配置文件,可以通过多种方式实现,包括`@ImportResource`注解、`SpringApplication.setAdditionalSources()`以及利用profiles。理解这些方法并灵活运用,...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件2

    本篇文章将详细探讨如何在Spring Boot中读取不同路径下的`applicationContext.xml`文件。 首先,了解Spring Boot默认的启动机制,它通过`@SpringBootApplication`注解来扫描和初始化应用。这个注解包含了`@...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件3

    本篇文章将深入探讨在Spring Boot中如何读取不同路径下的`applicationContext.xml`配置文件。 首先,理解Spring Boot的启动流程至关重要。Spring Boot通过`SpringApplication`类来启动,它会默认寻找`src/main/...

    webservice cxf spring整合返回list,bean,string,json,xml项目完整实例

    【标题】:在Java EE环境中,使用Apache CXF与Spring框架整合实现Web服务,返回List、Bean、String、JSON及XML的完整项目实例 【描述】:本项目旨在展示如何在Java企业级应用(Java EE)中,通过Apache CXF框架创建...

    Spring Boot技术知识点:如何读取不同路径里的applicationContext.xml配置文件4

    本文将深入探讨如何在Spring Boot项目中读取不同路径下的`applicationContext.xml`配置文件。 首先,Spring Boot的设计原则是简化配置,它默认不支持XML配置,而是倾向于自动配置和Java配置。然而,如果确实有需求...

    利用spring实现打印机

    接下来,我们将利用Spring的XML配置文件来声明`LaserPrinter`为`Printer`接口的实现,并注入到需要使用打印机的类中。在`beans.xml`配置文件中,我们这样定义: ```xml ``` 然后,假设我们有一个`DocumentService...

    31. Spring Boot导入XML配置【从零开始学Spring Boot】

    在本篇【从零开始学Spring Boot】系列教程中,我们将深入探讨如何在Spring Boot项目中导入并使用XML配置。Spring Boot以其简化Spring应用的初始搭建以及开发过程而闻名,通常推崇的是Java配置而非XML配置。然而,在...

    Spring XML配置十二个最佳实践

    ### Spring XML配置十二个最佳实践 #### 一、利用自动装配简化配置 在Spring框架中,自动装配(Autowiring)是一种非常实用的功能,它能够帮助我们减少对Bean依赖关系的手动配置工作量。通过设置`autowire`属性,...

    Eclipse spring基本配置步骤

    1. 在项目的src目录下,新建一个名为`applicationContext.xml`的XML文件,这是Spring的主要配置文件。 **步骤4:配置Bean** 在`applicationContext.xml`中,定义Bean的基本结构。例如,创建一个简单的HelloWorld类...

    spring aop 实现源代码--xml and annotation(带lib包)

    在Spring1.2或之前的版本中,实现AOP的传统方式就是通过实现Spring的AOP API来定义Advice,并设置代理对象。Spring根据Adivce加入到业务流程的时机的不同,提供了四种不同的Advice:Before Advice、After Advice、...

    Apache CXF2+Spring2.5轻松实现WebService

    集成Apache CXF与Spring的关键在于Spring的ApplicationContext。通过配置Spring XML文件,我们可以将CXF的组件和服务注册到Spring容器中,从而实现服务的生命周期管理。以下是一个基本的配置示例: ```xml ...

    spring applicationContext 配置文件

    &lt;?xml version="1.0" encoding="UTF-8"?&gt; xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p" ...

    JSP Spring ApplicationContext的国际化支持

    Spring框架通过ApplicationContext接口的国际化支持,提供了丰富的API和配置机制来实现这一点。 首先,ApplicationContext接口继承了MessageSource接口,因此它自然地获得了国际化消息支持的功能。MessageSource...

    Spring2.5 IOC的简单实现

    Spring 框架通过 XML 配置文件或注解方式来实现 IOC,让开发者能够声明组件及其依赖关系,而无需手动实例化对象。 **2. Spring 2.5 的配置方式** 在 Spring 2.5 中,有两种主要的配置方式: - **XML 配置**: 这是 ...

    使用Spring2.5的Autowired实现注释型的IOC

    在 Spring 2.5 中,Autowired 是一个非常重要的特性,它可以实现快速的自动注入,无需在 XML 文档里面添加 bean 的声明,大大减少了 XML 文档的维护。下面我们将详细介绍如何使用 Spring 2.5 的 Autowired 实现注释...

Global site tag (gtag.js) - Google Analytics