欢迎大家关注我的微信公众号,码猿Bug,或者扫描下方二维码,有需要资料的可以随时联系我

http://weixin.qq.com/r/qig7I1LEOw9ErRZA9324 (二维码自动识别)

今天给大家说一下springboot中@Conditional注解的作用,在我们常用的声明一个配置类时,我们都会采用注解的方法,@Configuration和@Bean一起搭配使用,@Configuration是指明当前类是一个配置类,就是代替之前的spring配置文件,在配置文件中用<bean><bean/>标签添加组件,但是现在有注解

* @Bean:就是将方法的返回值添加到容器中,容器中的这个组件默认的id就是方法名

当我们再了解springboot自动装配的源码中,我们会发现有很多的组件,springboot在启动时会去加载,会发现在META-INF下会有spring.factories的配置,而且在配置时会从properties类中获取属性,我们可以在配置文件中指定这些属性的值。但是在用@Configuration注解时,我们可以指定满足什么条件才会向容器中添加组件。就是我们下面要扩展的。Condition是一个接口,接口中有一个matches方法,返回值类型是boolean类型.今天我们只说@Conditional的使用,其他的都是一样的。

下面用代码举例子说明一下,首先定义一个实体类

@Data

我们可以自定义一个类实现Condition接口。

public class ConditionalDemo1 implements Condition {@Overridepublic boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {Environment environment = conditionContext.getEnvironment();String property = environment.getProperty("os.name");if(property.contains("Windows")){return true;}return false;}
}

接下来写一个配置类

@Configuration
public class PersonConfigure {@Bean(name="bill")@Conditional({ConditionalDemo1.class})//如果满足ConditionalDemo1返回true,继续加载下面这个方法public Person person1(){return new Person("Bill Gates",62);}
}

简单测试一下,

@RestController
public class ConditionalController {@AutowiredApplicationContext applicationContext;@RequestMapping("/cconditionalTest")public Person showe(){boolean flag=applicationContext.containsBean("bill");Person bill =(Person) applicationContext.getBean("bill");return bill;}
}

结果我们发现返回了Person的信息,说明 @Conditional({ConditionalDemo1.class})满足了,才会实现把Person注入到spring容器中。大家可以试一下,很简单的。

@data注解_聊一下@Conditional注解系列的作用相关推荐

  1. @qualifier注解_常见的 Spring 注解概览

    点击上方 Java后端,选择 设为星标 优质文章,及时送达 从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来配 ...

  2. java 注解_怎样理解 Java 注解和运用注解编程?

    怎样理解 Java 注解和运用注解编程? 注解和使用 先来看下概念首先从注释来看: 注释:给代码添加说明和解释,注释帮助开发人员理解程序.(Comment)说白点就是注释是给人看的. 注解:给代码添加 ...

  3. java注释和注解_深入理解JAVA注解(Annotation)以及自定义注解

    Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制.Java 语言中的类.方法.变量.参数和包等都可以被标注.注解可以看作是一种特殊的标记,在程序在编译或 ...

  4. java 扫描自定义注解_利用spring 自定义注解扫描 找出使用自定义注解的类

    我们常常有扫描项目里带有指定注解的class, 下面是利用spring扫描自定义注解的方法, 还是比较灵活的 我这里将扫描到的class放到map, 你可以放到其他地方,以便后期使用 import l ...

  5. java 获取bean的注解_如何获取spring 注解的bean

    展开全部 不用e69da5e887aa62616964757a686964616f31333337613131配置xml,直接java代码实现,参考代码如下:public class GetAppli ...

  6. java 切面 注解_十、使用注解定义切面

    一.本课目标 掌握使用注解实现AOP的方法 二.使用注解定义切面 2.1简介 AspectJ 面向切面的框架,它扩展了Java语言,定义了AOP语法,能够在编译期提供代码的织入. @AspectJ A ...

  7. java属性注解_【java自定义注解1】java自定义注解-属性

    关于自定义注解,以前项目种应用的不多,最近看新项目过程中发现了挺多自定义注解相关内容,使用起来比较巧妙,于是 总结了两种方式,记录如下: 第一种:结合反射进行属性注入,代码如下: 1.定义一个注解: ...

  8. java jaxb 注解_一、JAXB注解的使用详解

    一.首先先上一段测试的代码下面的说明和测试都已这一段代码为主 package shiqingxue.cn.itcast.utils.xml; import javax.xml.bind.annotat ...

  9. 12、常见Conditional注解源码解析(ok)

    参考资料:彻底搞定 Java 注解 Spring Boot中所有的@Conditional 注解如下: Conditional (o.s.context.annotation)|-Conditiona ...

最新文章

  1. 给开源编译器插入后门
  2. matlab安装配置VLFeat库
  3. 各种页面刷新代码大全,asp/javascript刷新页面代码
  4. laravel基础课程---14、表单验证(lavarel如何进行表单验证)
  5. GoPro 8及旗下首款360全景运动摄像机HERO Max将发售
  6. 操作系统之伙伴堆实现
  7. ASP.NET偷懒大法三 (利用Attribute特性简化多查询条件拼接sql语句的麻烦)
  8. Firefox浏览器修改背景颜色为豆沙绿
  9. rssi参数获取_如何获取WlanGetNetworkBssList函数返回值的Rssi值
  10. 图片放大后失真不清晰,怎么办?
  11. RESTFUL API 安全设计指南
  12. 人工智能相关数据集分享(三)
  13. 致远oa mysql 安装_致远OA协同办公系统OA安装步骤.doc
  14. 一个有下雨效果的注册界面(html+css+原生javascript)
  15. 多台路由器堆叠_双网多网叠加教程
  16. 【超分辨率】Zoom to Learn, Learn to Zoom
  17. RoboMaster机甲大师裁判系统赛事引擎助手-RM Referee Aid
  18. AI会给世界带来什么变化?世界著名机器人学家关于未来的预言!
  19. 木瓜移动每日资讯0601:速卖通5月底发布“G100出海计划”
  20. 洛谷P1618 Java解法

热门文章

  1. 通过jsl工具将java程序注册为windows服务
  2. 农用地包括哪些地类_征用土地公告应当包括哪些内容?|楹庭拆迁律师
  3. 在 M1 芯片 Mac 中使用原生 Java 优雅地玩 Minecraft
  4. 想直接在 IDEA 里面快乐的刷刷LeetCode算法题吗?
  5. 真香!使用 Goland 网页版实现真正的云开发
  6. 我们常用的撤销和恢复功能,你知道它们使用了什么设计模式吗?
  7. 面试:从volatile说到i++的线程安全问题
  8. kubernetes,什么鬼?
  9. Redis 性能问题分析
  10. 24 年前的 IE 仍能在 Win10中运行,这无敌兼容性与你的代码比比?