在SpringBoot日常开发中,我们都会想着通过修改properties文件的属性去实现对某一些组件的控制和管理,尤其是对某一个配置类进行控制,此时我们需要用的注解是@ConditionalOnProperty,该注解有三个必要的参数:
①prefix :配置文件中配置信息的前缀;
②name :配置信息的名称;
③havingValue :配置信息的值;
该注解的用法是当配置信息中填写的值与该注解设置的值一致,则该类生效,否则视为失效。下面以@Scheduled实现的定时器的开关控制为例进行分析:
首先在application.properties文件中添加:
scheduling.enabled: true
如果是想区分开发环境和生产环境下是否启动,可以在各自的配置文件中加上这句代码,根据需求修改配置属性为false或true.
@Configuration//启用定时任务@EnableScheduling//配置文件读取是否启用此配置@ConditionalOnProperty(prefix = "scheduling", name = "enabled", havingValue = "true")public class TimeCommitTask {/*** 每个月1日的00:00:00自动执行以下代码*/@Scheduled(cron="0 0 0 1 * ? ") //每月一次//cron的参数格式为:“秒 分 时 日 月 年”,详细说法请另行查阅public void timeOutTask() {//code}}
通过以上代码,我们可以看到,如果我们想控制@Scheduled的任务定时器,就在该注解的类名前加上注解,剩下的工作就是修改properties配置文件的scheduling.enabled属性再重启项目就可以生效。
至于@Configuration这个注解,如果当前类是需要设置为一个公共的配置类,就加上它;假如是一个业务逻辑类,则使用@Service也可以,意思是只需把当前类放到Spring容器中进行管理或者扫描到就行。
笔主有在其他博客看到相关的文章,但是没有看到注解具体添加在哪里的问题,故写此文进行提示。
此文仅为笔主学习总结,如有不足请各位读者多多指教!