Springboot 条件注解
@Conditional根据满足某一个特定条件创建一个特定的 Bean。就是根据特定条件来控制 Bean 的创建行为,这样我们可以利用这个特性进行一些自动的配置- Springboot 中大量用到了条件注解
- 示例,以不同的操作系统作为条件,我们将通过实现
Condition接口,并重写其matches()方法来构造判断条件。若在 Windows 系统下运行程序,则输出列表命令为 dir ,若在 Linux 系统下运行程序,则输出列表命令为 ls判断 Window 条件
public class WindowsCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Windows");
}
}
判断 Linux 条件
public class LinuxCondition implements Condition {
@Override
public boolean matches(ConditionContext context, AnnotatedTypeMetadata metadata) {
return context.getEnvironment().getProperty("os.name").contains("Linux ");
}
}
不同系统下的 Bean 类
接口
public interface ListService {
String showListCmd();
}
Window 下所要创建的 Bean 类
public class WindowsListService implements ListService{
@Override
public String showListCmd() {
return "dir";
}
}
Linux 下所要创建的 Bean 类
public class LinuxListService implements ListService {
@Override
public String showListCmd() {
return "ls";
}
}
配置类
@Configuration
public class ConditionConfig { @Bean
@Conditional(WindowsCondition.class)
public ListService windowsListService(){
return new WindowsListService();
} @Bean
@Conditional(LinuxCondition.class)
public ListService linuxListService(){
return new LinuxListService();
} }
测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = Ch522Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class TaskTest { @Autowired
private ListService listService; @Test
public void conditionalTest() {
System.out.println(listService.showListCmd());
}
}
测试结果
dir
Springboot 条件注解的更多相关文章
- SpringBoot条件注解@Conditional
最近项目中使用到了关于@Conditional注解的一些特性,故写此文记录一下 @Conditional是啥呀? @Conditional注解是个什么东西呢,它可以根据代码中设置的条件装载不同的bea ...
- SpringBoot条件注解的总结
https://blog.csdn.net/qq_31142553/article/details/86439950
- 助力SpringBoot自动配置的条件注解ConditionalOnXXX分析--SpringBoot源码(三)
注:该源码分析对应SpringBoot版本为2.1.0.RELEASE 1 前言 本篇接 如何分析SpringBoot源码模块及结构?--SpringBoot源码(二) 上一篇分析了SpringBoo ...
- springboot自动装配(3)---条件注解@Conditional
之前有说到springboot自动装配的时候,都是去寻找一个XXXAutoConfiguration的配置类,然而我们的springboot的spring.factories文件中有各种组件的自动装配 ...
- SpringBoot的条件注解源码解析
SpringBoot的条件注解源码解析 @ConditionalOnBean.@ConditionalOnMissingBean 启动项目 会在ConfigurationClassBeanDefini ...
- [读书笔记] 二、条件注解@Conditional,组合注解,元注解
一.条件注解@Conditional,组合注解,元注解 1. @Conditional:满足特定条件创建一个Bean,SpringBoot就是利用这个特性进行自动配置的. 例子: 首先,两个Condi ...
- SpringBoot核心注解应用
1.今日大纲 了解Spring的发展 掌握Spring的java配置方式 学习Spring Boot 使用Spring Boot来改造购物车系统 2.Spring的发展 Spring1.x 时代 在S ...
- Spring_总结_04_高级配置(二)_条件注解@Conditional
一.前言 本文承接上一节:Spring_总结_04_高级配置(一)之Profile 在上一节,我们了解到 Profile 为不同环境下使用不同的配置提供了支持,那么Profile到底是如何实现的呢?其 ...
- 条件注解@Conditional
通过活动的profile,可以获得不同的Bean.Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Conditonal注解 @Conditional根据满足某一个特定条件创建一个特定 ...
随机推荐
- mysql连接查询:3个数据表操作研究
首先,新建数据表aaa.bbb以及他们相关联的数据表avb:字段名如下图 填充点数据,如下: 上面设计表的时候,故意在两个表中有相同字段con,如果不做处理的话,在php程序中,看看什么情况?得到的结 ...
- SQL注入(2)
SQL注入id title content time author select * from news where id = 1; select 1,2,3,4,5,6 from table ...
- 火鸡堂 对 基于云的胜利冲锋队 为了交项目干杯 的 Beta 产品测试报告
基于云的胜利冲锋队 第一次上手 第一次上手体验感觉如何?能否正常运行? 不错,学生端和老师端各功能很清晰,大部分功能正常运行,但添加班级之类的部分功能页面暂时无响应 看到千帆竞发图泪流满面,图表中有各 ...
- 项目Beta冲刺(团队7/7)
项目Beta冲刺(团队) --7/7 作业要求: 项目Beta冲刺(团队) 1.团队信息 团队名 :男上加男 成员信息 : 队员学号 队员姓名 个人博客地址 备注 221600427 Alicesft ...
- 利用pil库处理图像
1关于PIL PIL(Python Image Library)是python的第三方图像处理库,但是由于其强大的功能与众多的使用人数,几乎已经被认为是python官方图像处理库了. 2PIL的主要功 ...
- mysql免安装版本测试(mysql-5.7.18-winx64)
最近在某大学代课要安装mysql,由于他们的电脑机器不能用installer安装(具体原因我也不清楚,一点击就显示要结束进程),在查阅了资料之后在我的小笔记本上做了一把实验,下面记录过程 参考博客为: ...
- 一个Java字符串中到底有多少个字符?
依照Java的文档, Java中的字符内部是以UTF-16编码方式表示的,最小值是 \u0000 (0),最大值是\uffff(65535), 也就是一个字符以2个字节来表示,难道Java最多只能表示 ...
- ABAP_DEMO篇33 SUM和COLLECT的用法
ABAP程序内表中的数量和金额字段 经常会需要合计, SUM和COLLECT 语法都能实现对数量和金额字段的合计. 1. SUM语法 ABAP中SUM语句比不上EXCEL里的强大:SUM只能在loo ...
- 08_STP(数通华为)
1. 网络拓扑 2. 激活生成树[SW1]stp mode stp [SW1]stp enable [SW2]stp mode stp [SW2]stp enable [SW3]stp mode st ...
- js字符串转换为JSON
1. json字符串 jsStr = “{"a":'xxx', "b":'yyy'}” JSON.parse(jsStr); //可以将json字符串转换成j ...