Spring之条件注解@Conditional,条件(系统)不同注入的对象也不同。
来源:互联网 发布:epson机器人编程 编辑:程序博客网 时间:2024/05/17 00:17
条件注解,可以根据不同的条件来做出不同的事情。在Spring中条件注解可以说是设计模式中状态模式的一种体现方式,同时也是面向对象编程中多态的应用部分。
在Spring框架中,当我们使用条件注解时,我们会为每种独立的条件创建一个类,根据这个类对应的条件的成立情况我们来选择不同的任务来执行。当然我们在声明任务时,一般使用接口来声明。因为我们会在Spring的配置类中指定具体条件下的具体类。接下来,我们将来看一下Spring框架中@Conditional注解的具体使用方式。
本次演示,我们将根据操作系统的不同,寻找对应系统的Tomcat的存储目录,并执行Tomcat的启动操作。
windows环境:win10系统,Tomcat目录地址:D:\apache-tomcat-7.0.78\bin;
Linux环境:Ubuntu14系统,Tomcat目录地址:/myweb/apache-tomcat-9.0.0.M26/bin;
1、创建常量类ConfigUtil,以便常量的管理。
2、创建对应的Service接口TomcatService。
3、创建Service接口的不同实现类WindowsTomcatServiceImpl、LinuxTomcatServiceImpl;
4、创建完Service接口及其实现类后,需要创建@Conditional注解所需的条件类。每个条件类对应着一种独立的情况,在Spring中的条件类需要实现Condition接口。下方是我们创建的两个条件类WindowsCondition、LinuxCondition。
5、Service的接口、Service的类以及相应的条件创建完毕后,接下来我们就该在Java的配置类中将条件类与Service类对象进行关联了。
6、测试,使用main方法测试。
最终打印出我们在windows下的执行结果
7、使用Runtime执行Tomcat的启动或停止命令(项目已通过Spring boot搭建为web项目,可通过路径访问执行操作,已忽略test测试)。
8、完整的代码Demo
方法1,通过个人网站:http://yangjiace.xyz/resource.html
方法2,通过CSDN论坛:http://download.csdn.net/download/yjc_1111/10159164
注意
在执行时,需要将Tomcat的如果发现没有启动Tomcat,并且控制台打印如下信息:
这时我们需要将CATALINA_HOME配置到环境变量中。
- Spring之条件注解@Conditional,条件(系统)不同注入的对象也不同。
- Spring 条件注解(@Conditional)
- spring boot 条件注解的使用@Conditional;@Conditional 可以根据条件,创建不同的bean,
- 浅谈spring中@Conditional(条件注解)
- 第十一章 Spring条件注解@Conditional
- Spring4 条件注解@Conditional
- @Conditional条件注解
- springboot根据不同的条件创建bean,动态创建bean,@Conditional注解使用
- Spring 条件化Bean @Conditional
- 条件化的Bean——@Conditional注解
- 简化条件表达式之三 :Consolidate Duplicate Conditional Fragments(合并重复的条件片段)
- 【Spring】 (10)条件注解
- SpringBoot4-spring高级话题-spring aware,多线程,计划任务,条件注解@Conditional
- 条件接收系统 (CAs:Conditional Access System)
- 不同Context对象创建的LayoutInflater对象也不同
- XQuery表达式之条件表达式(Conditional Expression)
- #if #elif #endif 的使用--------条件编译(conditional compilation)
- Spring @Conditional注解的使用
- leetcode-216. Combination Sum III
- python matplotlib中显示中文问题
- 冒泡排序-c++代码实现
- 欢迎使用CSDN-markdown编辑器
- C/C++windows多线程
- Spring之条件注解@Conditional,条件(系统)不同注入的对象也不同。
- 磁盘文件系统
- 根据 geoJson, 使用 d3 画出地图及经纬度打点
- [转]理解LSTM网络
- 总结
- 洛谷 P2626 斐波那契数列(升级版)
- 爬取网易云音乐评论《安河桥》,进行分析
- 第十五周LeetCode
- angular 的小应用 增删查 排序等