条件注解,可以根据不同的条件来做出不同的事情。在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,通过优快云论坛:http://download.youkuaiyun.com/download/yjc_1111/10159164
注意
在执行时,需要将Tomcat的如果发现没有启动Tomcat,并且控制台打印如下信息:
这时我们需要将CATALINA_HOME配置到环境变量中。