美文网首页
条件化创建Bean

条件化创建Bean

作者: 寒飞子 | 来源:发表于2018-08-08 18:03 被阅读13次

前言

Spring 4提供了@Conditional,用来根据条件创建Bean,具体用法如下:

开始

首先,自定义条件类BusServiceExistsCondition,该类是判断如果上下文中存在名为payBusService的Bean,则返回false。

package com.asiainfo.aigov.plugins.pay;

import org.springframework.context.annotation.Condition;
import org.springframework.context.annotation.ConditionContext;
import org.springframework.core.type.AnnotatedTypeMetadata;

public class BusServiceExistsCondition implements Condition {
    
    static final String BUS_SERVICE_BEAN_NAME = "payBusService";

    @Override
    public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
        return !context.getBeanFactory().containsBean(BUS_SERVICE_BEAN_NAME);
    }

}

然后,在配置类BusServiceConfig中,如果该条件判断为true,则实例化一个名为payBusService的Bean。

package com.asiainfo.aigov.plugins.pay;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Conditional;
import org.springframework.context.annotation.Configuration;

import com.asiainfo.aigov.plugins.pay.service.BusService;
import com.asiainfo.aigov.plugins.pay.service.IBusService;

@Configuration
public class BusServiceConfig {

    @Conditional(BusServiceExistsCondition.class)
    @Bean(name=BusServiceExistsCondition.BUS_SERVICE_BEAN_NAME)
    public IBusService busService() {
        return new BusService();
    }
    
}

这样的话,在你提供了默认的实现之后,也可以通过定义一个实现类,名为payBusService,来覆盖默认的实现。

结后语

相关文章

  • 条件化创建Bean

    前言 Spring 4提供了@Conditional,用来根据条件创建Bean,具体用法如下: 开始 首先,自定义...

  • 008Spring自定义初始化和销毁方法

    1、简介 Bean的生命周期: ​ bean的创建--》初始化--》销毁 bean的创建: ​ 单实例:在...

  • spring bean管理

    1.bean实例化的方式 (1)bean的实例化就是通过配置文件创建对象(2)bean实例化三种创建方式第一种:通...

  • Spring高级装配之条件化创建Bean

    上节介绍了profile机制条件化创建Bean的具体步骤,假如你想一个或多个Bean只有在应用的路径下包含特定的库...

  • Spring生命周期

    1. @Bean初始化和销毁 1.1 bean的生命周期:   bean创建-----初始化-----销毁的过程 ...

  • Bean的初始化过程

    Bean的初始化过程 bean创建-->初始化-->摧毁 容器管理bean的声明周期 我们可以自定义初始化...

  • 3、bean生命周期

    前面讲了bean的创建和注入,这一节将介绍bean的生命周期。 bean的生命周期过程: bean创建---初始化...

  • 【Spring源码】8.IOC之创建bean对象之Factory

    前言 上一篇讲了 Bean实例化的总体流程: Bean的创建 各种信息的收集 依赖注入 Bean的初始化 Bean...

  • 24--Spring解决bean之间的循环依赖

    通过前几节的分析,已经成功将bean实例化,但是大家一定要将bean的实例化和完成bean的创建区分开,bean的...

  • Spring 生命周期

    Bean生命周期 Bean创建 --> 初始化 --> 销毁过程 容器管理Bean生命周期 自定义初始化和销毁方法...

网友评论

      本文标题:条件化创建Bean

      本文链接:https://www.haomeiwen.com/subject/gybxbftx.html