必威体育Betway必威体育官网
当前位置:首页 > IT技术

Spring 双亲容器

时间:2019-10-12 06:42:13来源:IT技术作者:seo实验室小编阅读:56次「手机版」
 

yuant

应用场景

Spring中父子容器的实现实例Spring的父子容器可以通过ConfigurableAPPlicationcontext或ConfigurableBeanFactory来实现。

这两个接口中分别有setparent及setParentBeanFactory方法,可以与当前的子容器进行父子容器关联。

这个时候子容器就可以引用父容器中的bean,但是父容器是不能够引用子容器中的bean的,并且各个子容器中定义的bean是互不可见的,这样也可以避免因为不同的插件定义了相同的bean而带来的麻烦。

应用场景包括插件或组件的接入,只需要对方提供JAR即可,由父容器进行引导,各个子容器再完成自己的应该完成的工作即可。

应用举例

Runner.java

//这个类负责启动父容器
public class Runner {
    public static void main(String[] args){
        ApplicationContext context = new ClassPathXmlApplicationContext("classpath*:/spring1.xml");
    }
}

PluginLoader.java

public class PluginLoader implements ApplicationContextAware {
    ApplicationContext parentApplicationContext;
    ConfigurableApplicationContext childContext;

    public void load() {
      //扫描所有classpath下面的以plugin_开头spring的配置文件进行装配,这里约定所有的子容器插件都必须有一个以plugin_开头的配置文件,并通过这个文件被父容器加载
        childContext = new ClassPathXmlApplicationContext("classpath*:/plugin_*.xml");
        childContext.setParent(parentApplicationContext);
        childContext.refresh();
    }

    public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
        this.parentApplicationContext = applicationContext;
    }
}

可以看到父容器(spring1.xml):

<bean id="parentClass" class="com.test1.ParentClass"></bean>
<bean id="pluginLoader" class="com.test1.PluginLoader" init-method="load"></bean>

子容器(plugin_1.xml)

<pre name="code" class="html"><bean id="childContext1" class="com.test1.child.ChildContext1"></bean>

相关阅读

Spring Boot 中使用 @Transactional 注解配置事务管理

事务管理是应用系统开发中必不可少的一部分。Spring 为事务管理提供了丰富的功能支持。Spring 事务管理分为编程式和声明式的两种

docker 容器中设置中文语言包的问题

如果在Docker 中采用 docker search centos 采用 docker pull docker.io/centos 下载基础镜像 这个镜像是不支持中文的,可以采

Spring Boot 2.0 新特性ApplicationStartedEvent实战

一 点睛 在Spring Boot 2.0中对事件模型做了一些增强,主要就是增加了ApplicationStartedEvent事件,所以在2.0版本中所有的事件按执

Spring Cloud 从入门到精通

Spring Cloud 是一套完整的微服务解决方案,基于 Spring Boot 框架,准确的说,它不是一个框架,而是一个大的容器,它将市面上较好的微服务

#SpringMVC--理解web.xml中的 url-pattern标签及其使

在web.xml中,我们通过下面的标签来匹配客户端发出的请求: <servlet-mapping> <servlet-name>yzh_ssh</servlet-name> <ur

分享到:

栏目导航

推荐阅读

热门阅读