Spring源码窥探之:Condition
采用注解的方式来注入bean
1. 编写config类
- /**
- * @author 70KG
- * @Title: ConditionConfig
- * @Description:
- * @date 2018/7/22下午3:50
- * @From www.nmyswls.com
- */
- @Configuration
- public class ConditionConfig {
- @Conditional(ConditionMatch1.class)
- @Bean
- public Goods m1() {
- System.out.println("将zhang放入IOC中。。。。");
- return new Goods("zhang", 24);
- }
- @Conditional(ConditionMatch2.class)
- @Bean
- public Goods m2() {
- System.out.println("将jian放入IOC中。。。。");
- return new Goods("jian", 25);
- }
- @Bean
- public Goods m3() {
- System.out.println("将bing放入IOC中。。。。");
- return new Goods("bing", 26);
- }
- }
2. 编写condition类
- /**
- * @author 70KG
- * @Title: ConditionMatch1
- * @Description:
- * @date 2018/7/22下午3:53
- * @From www.nmyswls.com
- */
- public class ConditionMatch1 implements Condition {
- // conditionContext:判断条件可以使用的上下文环境
- // annotatedTypeMetadata:注解的信息
- @Override
- public boolean matches(ConditionContext conditionContext, AnnotatedTypeMetadata annotatedTypeMetadata) {
- Environment environment = conditionContext.getEnvironment();
- String property = environment.getProperty("os.name");
- if (property.contains("Mac")) {
- System.out.println("=====================");
- return true;
- }
- return false;
- }
- }
可见它实现了condition接口,目的就是在bean注入容器之前进行判断,符合条件的才注入容器。
3.编写测试类
- /**
- * @author 70KG
- * @Title: FutureTaskTest
- * @Description:
- * @date 2018/7/22下午3:49
- * @From www.nmyswls.com
- */
- public class Test01 {
- public static void main(String[] args) {
- // IOC容器创建(容器类似一个Map)
- AnnotationConfigApplicationContext ac = new AnnotationConfigApplicationContext(ConditionConfig.class);
- System.out.println("IOC容器初始化完成。。。。。");
- }
- }
4. 测试结果:
- =====================
- 将zhang放入IOC中。。。。
- 将bing放入IOC中。。。。
- IOC容器初始化完成。。。。。
Spring源码窥探之:Condition的更多相关文章
- Spring源码窥探之:注解方式的AOP原理
AOP入口代码分析 通过注解的方式来实现AOP1. @EnableAspectJAutoProxy通过@Import注解向容器中注入了AspectJAutoProxyRegistrar这个类,而它在容 ...
- Spring源码窥探之:声明式事务
1. 导入驱动,连接池,jdbc和AOP的依赖 <!-- c3p0数据库连接池 --> <dependency> <groupId>c3p0</groupId ...
- Spring源码窥探之:AOP注解
AOP也就是我们日常说的@面向切面编程,看概念比较晦涩难懂,难懂的是设计理念,以及这样设计的好处是什么.在Spring的AOP中,常用的几个注解如下:@Aspect,@Before,@After,@A ...
- Spring源码窥探之:@Profile
Spring为我们提供的多环境启动 1. 配置类,注入三个不同环境的数据源,并加上注解 /** * description: 以下准备了三套不同环境的数据源 * * @author 70KG * @d ...
- Spring源码窥探之:Spring AOP初步使用
AOP即面向切面编程.它的底层实际是用了spring的动态代理,具体是JDK的代理还是CGLIB的代理,就视情况而定了.本博客园仅仅作为平时记录,显得有些杂乱无章,如果想了解动态代理,设计模式,请访问 ...
- Spring源码窥探之:@Value
1. 首先定义实体 /** * @author 70KG * @Title: Apple * @Description: 苹果实体 * @date 2018/10/22下午9:26 * @From w ...
- Spring源码窥探之:BeanPostProcessor
Spring的Bean后置处理器 1. 实体类 /** * @author 70KG * @Title: Train * @Description: * @date 2018/7/23下午11:31 ...
- Spring源码窥探之:Spring AOP初步
AOP(Aspect Oriented Programming):即我们常说的面向切面编程. 什么是AOP?AOP是在我们原来写的代码的基础上,进行一定的包装,比如在方法执行前.方法返回后.方法抛出异 ...
- Spring源码窥探之:单实例Bean的创建过程
finishBeanFactoryInitialization(beanFactory);初始化剩下的所有的单实例(非懒加载)Bean(Instantiate all remaining (non-l ...
随机推荐
- XShell上传、下载本地文件到linux服务器
Python之道发表于程序员八阿哥订阅 1.2K 腾讯云服务器 年付3折起 首次购买云服务器 最低3折起 超高性价比 限时抢购 Xshell很好用,然后有时候想在windows和linux上传或下载某 ...
- flask框架(六)——闪现(get_flashed_message)、请求扩展、中间件(了解)
message -设置:flash('aaa') -取值:get_flashed_message() -假设在a页面操作出错,跳转到b页面,在b页面显示a页面的错误信息 1 如果要用flash就必须设 ...
- DS 壹之型 头指针与头结点
之前结合网上博客整理的笔记,希望能帮你解除疑惑!
- [LOJ6432] [PKUSC2018] 真实排名
题目链接 LOJ:https://loj.ac/problem/6432 Solution 假设我们当前要算\(x\)的答案,分两种情况讨论: \(x\)没被翻倍,那么\([a_x/2,a_x]\)这 ...
- node-red 安装
介绍 Node-RED背景介绍• Node-Red是IBM公司开发的一个可视化的编程工具.它允许程序员通过组合各部件来编写应用程序.这些部件可以是硬件设备(如:Arduino板子).Web API(如 ...
- 在 WPF 中获取一个依赖对象的所有依赖项属性
原文:在 WPF 中获取一个依赖对象的所有依赖项属性 本文介绍如何在 WPF 中获取一个依赖对象的所有依赖项属性. 本文内容 通过 WPF 标记获取 通过设计器专用方法获取 通过 WPF 标记获取 p ...
- java 单链表反转
最近与人瞎聊,聊到各大厂的面试题,其中有一个就是用java实现单链表反转.闲来无事,决定就这个问题进行一番尝试. 1.准备链表 准备一个由DataNode组成的单向链表,DataNode如下: pub ...
- React Native 开发豆瓣评分(四)集中管理 fetch 数据请求
豆瓣评分的API接口 接口是从网上查找的,看样子应该是微信小程序里面扣出来的(ua 里面有 wechatdevtools) 接口都需要设置apiKey(054022eaeae0b00e0fc068c0 ...
- tp5模板中js方法中url函数传参的解决办法
代码如下: layer.msg(data.msg, {icon: 1,time:1500,shade: 0.1}, function(index){ layer.close(index); var s ...
- adb命令获取app布局文件xml
adb shell /system/bin/uiautomator dump --compressed /data/local/tmp/uidump.xml adb pull /data/local/ ...