@data注解_聊一下@Conditional注解系列的作用
欢迎大家关注我的微信公众号,码猿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注解系列的作用相关推荐
- @qualifier注解_常见的 Spring 注解概览
点击上方 Java后端,选择 设为星标 优质文章,及时送达 从Java5.0开始,Java开始支持注解.Spring做为Java生态中的领军框架,从2.5版本后也开始支持注解.相比起之前使用xml来配 ...
- java 注解_怎样理解 Java 注解和运用注解编程?
怎样理解 Java 注解和运用注解编程? 注解和使用 先来看下概念首先从注释来看: 注释:给代码添加说明和解释,注释帮助开发人员理解程序.(Comment)说白点就是注释是给人看的. 注解:给代码添加 ...
- java注释和注解_深入理解JAVA注解(Annotation)以及自定义注解
Java 注解(Annotation)又称 Java 标注,是 JDK5.0 引入的一种注释机制.Java 语言中的类.方法.变量.参数和包等都可以被标注.注解可以看作是一种特殊的标记,在程序在编译或 ...
- java 扫描自定义注解_利用spring 自定义注解扫描 找出使用自定义注解的类
我们常常有扫描项目里带有指定注解的class, 下面是利用spring扫描自定义注解的方法, 还是比较灵活的 我这里将扫描到的class放到map, 你可以放到其他地方,以便后期使用 import l ...
- java 获取bean的注解_如何获取spring 注解的bean
展开全部 不用e69da5e887aa62616964757a686964616f31333337613131配置xml,直接java代码实现,参考代码如下:public class GetAppli ...
- java 切面 注解_十、使用注解定义切面
一.本课目标 掌握使用注解实现AOP的方法 二.使用注解定义切面 2.1简介 AspectJ 面向切面的框架,它扩展了Java语言,定义了AOP语法,能够在编译期提供代码的织入. @AspectJ A ...
- java属性注解_【java自定义注解1】java自定义注解-属性
关于自定义注解,以前项目种应用的不多,最近看新项目过程中发现了挺多自定义注解相关内容,使用起来比较巧妙,于是 总结了两种方式,记录如下: 第一种:结合反射进行属性注入,代码如下: 1.定义一个注解: ...
- java jaxb 注解_一、JAXB注解的使用详解
一.首先先上一段测试的代码下面的说明和测试都已这一段代码为主 package shiqingxue.cn.itcast.utils.xml; import javax.xml.bind.annotat ...
- 12、常见Conditional注解源码解析(ok)
参考资料:彻底搞定 Java 注解 Spring Boot中所有的@Conditional 注解如下: Conditional (o.s.context.annotation)|-Conditiona ...
最新文章
- 给开源编译器插入后门
- matlab安装配置VLFeat库
- 各种页面刷新代码大全,asp/javascript刷新页面代码
- laravel基础课程---14、表单验证(lavarel如何进行表单验证)
- GoPro 8及旗下首款360全景运动摄像机HERO Max将发售
- 操作系统之伙伴堆实现
- ASP.NET偷懒大法三 (利用Attribute特性简化多查询条件拼接sql语句的麻烦)
- Firefox浏览器修改背景颜色为豆沙绿
- rssi参数获取_如何获取WlanGetNetworkBssList函数返回值的Rssi值
- 图片放大后失真不清晰,怎么办?
- RESTFUL API 安全设计指南
- 人工智能相关数据集分享(三)
- 致远oa mysql 安装_致远OA协同办公系统OA安装步骤.doc
- 一个有下雨效果的注册界面(html+css+原生javascript)
- 多台路由器堆叠_双网多网叠加教程
- 【超分辨率】Zoom to Learn, Learn to Zoom
- RoboMaster机甲大师裁判系统赛事引擎助手-RM Referee Aid
- AI会给世界带来什么变化?世界著名机器人学家关于未来的预言!
- 木瓜移动每日资讯0601:速卖通5月底发布“G100出海计划”
- 洛谷P1618 Java解法