当前位置: 首页 > article >正文

SpringBoot条件装配@Conditional

1) @ConditionalOnBean

  功能:在IOC容器中存在指定bean时,加载当前bean

//将Teacher作为bean注入IOC
@Component
public class Teacher{    
}

public class Student{
}

@Configuration
public class MyBeanFactory{
    
    //如果IOC容器中存在Teacher这个bean,则将student作为bean注入
    @ConditionalOnBean(value={Teacher.class})
	@Bean
	Student student(){
        return new Student();
    }
}

2) @ConditionalOnMissingBean

   功能:在IOC中不包含指定bean时,加载当前bean

public class Student{
}

@Configuration
public class MyBeanFactory{
    
    //如果IOC容器中不存在Student,则注入Student
    @ConditionalOnMissingBean(value={Student.class})
    @Bean
    Student student(){
        return new Student();
    }
}

3) @ConditionalOnClass

   功能:如果当前项目包含指定类,则加载当前bean

// com.entity.Student
public class Student{
}

@Configuration
public class MyBeanFactory{
    
    //如果项目中含有Student类,则加载当前bean
    @ConditionalOnClass(name="com.entity.student")
    @Bean
    Student student(){
        return Student();
    }
}

4) @ConditionalOnMissingClass

功能:如果当前项目不包含指定类,则加载当前bean

public class Student{
}

@Configuration
public class MyBeanFactory{
    
    //如果项目中不包含Teacher类,则加载当前bean
    @ConditionalOnMissingClass(name="com.entity.Teacher")
    @Bean
    Student student(){
        return Student();
    }
}

5) @ConditionalOnProperty

功能:如果配置文件有指定属性,并且属性值与预期值一致,则注入当前bean

在配置文件配置如下属性:
*****************************
student.enable=true     
*****************************    
    
@Configuration
public class MyBeanFactory{
    
    //如果配置文件中配置了student.enable,并且student.enable=true, 则加载当前bean
    @ConditionalOnProperty(value="student.enable" , havingValue="true" )
    @Bean
    Student student(){
        return Student();
    }
}

6) @ConditionalOnResource

功能:如果项目中包含指定资源,则加载当前bean

// 假设有 /static/index.html
@Configuration
public class MyBeanFactory{
    
    //如果包含 /static/index.html 资源,就加载当前bean
    @ConditionalOnResource(resources="/static/index.html" )
    @Bean
    Student student(){
        return Student();
    }
}

7) @ConditionalOnWebApplication 、@ConditionalOnNotWebApplication

功能:如果当前项目是web应用 ( 或不是web应用 ) 时生成当前bean

@Configuration
public class MyBeanFactory{
    /*
    *    如果是web应用,则加载Student作为bean
    *                否则加载Teacher作为bean
    */
    
    @ConditionalOnWenApplication
    @Bean
    Student student(){
        return Student();
    }
    
    @ConditionalOnNotWebApplication
    @Bean
    Teacher teacher(){
        return new Teacher();
    }
}

http://www.kler.cn/a/418200.html

相关文章:

  • unique_ptr
  • 【Python爬虫五十个小案例】爬取猫眼电影Top100
  • 开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
  • 代码之丑第一期-缩进
  • MySQL 复合查询
  • 分布式项目使用Redis实现数据库对象自增主键ID
  • C语言:深入理解指针(1)
  • 【优选算法】模拟
  • 【Linux】进程控制,手搓简洁版shell
  • LeetCode 动态规划 任意子数组和的绝对值的最大值
  • 【机器学习】入门机器学习:从理论到代码实践
  • 8)语法分析:引导词
  • 解锁软件构建的艺术:六种架构模式的解析
  • Matlab模块From Workspace使用数据类型说明
  • leetcode 502.IPO
  • Synaplify之identify_debugger抓信号
  • 使用 Selenium 和 Python 爬取腾讯新闻:从基础到实践
  • SystemUI 下拉框 Build 版本信息去掉
  • LeetCode题练习与总结:找到字符串中所有字母异位词--438
  • 数据库日期时间用什么类型?
  • JMeter实时性能压测可视化系统整合
  • Linq(C#)之对数据分组
  • Springboot小知识(1):启动类与配置
  • Oracle--表空间Tablespace
  • 验证 kubelet 服务已经停止并且不再生成错误日志
  • 达梦数据库常用指令都是工作中常用的