3.Spring高级话题—4.条件注解@Conditional

1.点睛
在2.4节学到,通过活动的profile,我们可以获得不同的Bean。Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Conditional注解。
@Conditional根据满足某一个特定条件创建一个特定的Bean。比方说,当某一个jar包在一个类路径下的时候,自动配置一个或多个Bean;或者只有某个Bean被创建才会创建另外一个Bean。总的来说,就是根据特定条件来控制Bean的创建行为,这样我们可以利用这个特性进行一些自动的配置。
在Spring Boot中将会大量应用到条件注解,更多内容见6.1节。
下面的示例将以不同的操作系统作为条件,我们将通过实现Condition接口,并重写其matches方法来构造判断条件。若在Windows系统下运行程序,则输出列表命令为dir;若在Linux操作系统下运行程序,则输出列表命令为ls。
2.示例
(1)判断条件定义
①判断Windows的条件

②判断Linux的条件

(2)不同系统下Bean的类
①接口

②Windows下所要创建的Bean的类

③Linux下所要创建的Bean的类

(3)配置类

通过@Conditional注解,符合Windows条件则实例化windowsListService
通过@Conditional注解,符合Linux条件则实例化linuxListService
(4)运行

结果

时间: 2024-09-24 14:31:24

3.Spring高级话题—4.条件注解@Conditional的相关文章

【Spring】Spring高级话题-@Enable***注解的工作原理

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] @EnableAspectJAutoProxy @EnableAspectJAutoProxy注解 激活Aspect自动代理 <aop:aspectj-autoproxy/> 开启对AspectJ自动代理的支持. 在用到AOP的自动代理的时候用,如果你理解了Java的动态代理,很容易的就会熟悉AOP的自动代理的. @EnableAsync @EnableAsync注解开启异步方法

【Spring】Spring高级话题-条件注解-@Condition

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 进行本示例的演示,需要先配置好Maven和Spring哦. 见: [Spring]基于IntelliJ IDEA搭建Maven 分析 在前面的一篇博客中:[Spring]Spring常用配置-Profile 通过profile,我们可以获得不同的profile,我们可以获得不同的Bean.Spring4提供了一个更通用的基于条件的Bean的创建,即使用@Condition注解. @

【Spring】Spring高级话题-组合注解与元注解

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 进行本示例的演示,需要先配置好Maven和Spring哦. 见: [Spring]基于IntelliJ IDEA搭建Maven 分析 所谓的元注解: 其实就是可以注解到别的注解上的注解. 而被注解的注解我们就称之为组合注解.(仔细理解,可能有点绕) 组合注解同时具备元注解的功能! Spring的很多注解都可以作为元注解,而且Spring本身已经有很多组合注解. 组合注解的好处: 简

3.Spring高级话题—3.计划任务

1.点睛从Spring3.1开始,计划任务在Spring中的实现变得异常的简单.首先通过在配置类注解@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务.Spring通过@Scheduled支持多种类型的计划任务,包含cron.fixDelay.fixRate等.//@Scheduled(fixedDelay=ONE_Minute)//@Scheduled(fixedRate=ONE_Minute)//第一位,表示秒

【Spring】Spring高级话题-计划任务-@EnableScheduling

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 进行本示例的演示,需要先配置好Maven和Spring哦. 见: [Spring]基于IntelliJ IDEA搭建Maven 分析 要实现计划任务,首先通过在配置类注解@EnableScheduling来开启对计划任务的支持,然后在要执行计划任务的方法上注解@Scheduled,声明这是一个计划任务. Spring通过@Scheduled支持多种类型的计划任务,包含cron.fi

3.Spring高级话题—1.Spring Aware

1.点睛Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的.即你可以将你的容器替换成别的容器,如Google Guice,这时Bean之间的耦合度很低.但是在实际项目中,你不可避免的要用到Spring容器本身的功能资源,这时你的Bean必须意识到Spring容器的存在,才能调用Spring所提供的资源,这就是所谓的Spring Aware.其实Spring Aware本来就是Spring设计用来框架内部使用的,若使用了Spring Aware,你的Bean将

【Spring】Spring高级话题-测试Spring项目

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 进行本示例的演示,需要先配置好Maven和Spring哦. 见: [Spring]基于IntelliJ IDEA搭建Maven 分析 测试是开发工作中不可缺少的部分. 单元测试只针对当前开发的类和方法进行测试,可以简单通过模拟依赖来实现,对运行环境没有依赖: 但是仅仅进行单元测试是不够的,它只能验证当前类或当前方法能否正常工作,而我们想要知道系统的各个部分组合在一起是否能正常工作,

【Spring】Spring高级话题-Spring Aware

转载请注明出处:http://blog.csdn.net/qq_26525215 本文源自[大学之旅_谙忆的博客] 分析 Spring的依赖注入的最大亮点就是你所有的Bean对Spring容器的存在是没有意识的. 也就是说,你可以把你的容器换成别的容器,如Google Guice,这时Bean之间的耦合度很低. 但是在实际项目中,基本上不可避免的要用到Spring容器本身的功能资源,这时你的Bean必须要意识到Spring容器的存在,才能调用Spring所提供的资源,这就是所谓的Spring A

C#中的线程(四)高级话题

Keywords:C# 线程Source:http://www.albahari.com/threading/Author: Joe AlbahariTranslator: Swanky WuPublished: http://www.cnblogs.com/txw1958/Download:http://www.albahari.info/threading/threading.pdf   第四部分:高级话题   非阻止同步 早些时候,我们讨论了非常简单的赋值和 更新一个字段时需要使用同步的例