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配置到环境变量中。

这里写图片描述

阅读全文
0 0
原创粉丝点击