当前位置: 首页 > news >正文

福州市网站建设_网站建设公司_轮播图_seo优化

镜像别人网站做排名的好处,温江区网站建设,建设公司网站的要点,建设银行怀柔支行营业部网站Scheduled注释提供了一种在Spring驱动的应用程序中创建计划任务的简便方法。 我们可以使用它通过定期调度或cron表达式来调度我们的任务。 尽管时段调度也可能有用#xff0c;但是cron表达式使我们对调度任务的调用有了更多的控制。 这就是为什么它们在现实生活中非常有用的原… Scheduled注释提供了一种在Spring驱动的应用程序中创建计划任务的简便方法。 我们可以使用它通过定期调度或cron表达式来调度我们的任务。 尽管时段调度也可能有用但是cron表达式使我们对调度任务的调用有了更多的控制。 这就是为什么它们在现实生活中非常有用的原因。 但是如果执行不正确使用cron表达式将有一个主要缺点。 让我们找出那是什么。 创建计划任务 假设我们要创建一个任务该任务每秒被调用一次并且仅将一条消息写入日志。 我们可以按照以下步骤创建此任务由于本文的第二部分对此进行了描述因此我们将跳过所需的配置 创建一个名为ScheduledJob的类。 用Component注释对类进行注释。 创建一个私有的Logger字段并实例化创建的字段。 创建一个名为run的公共方法并确保其返回类型为void 。 使用Scheduled注释对方法进行注释并将使用的cron表达式设置为cron属性的值 Spring中的Cron Scheduler提供了有关cron表达式的详尽概述。 通过将单个消息写入日志来实现该方法。 ScheduledJob类的源代码如下所示 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component public class ScheduledJob {private static final Logger LOGGER LoggerFactory.getLogger(ScheduledJob.class);Scheduled(cron 0-59 * * * * *)public void run() {LOGGER.debug(run());} } 我们实现的问题是cron表达式是硬编码的。 这意味着不可能在不同的环境中使用不同的配置。 如果要在不同的环境中使用不同的调度配置则必须在创建部署的二进制文件之前手动更改配置。 这自然是容易出错的。 由于使用错误的调度配置的后果可能很严重因此我们必须找到一种方法来将cron表达式从代码移动到项目的配置文件中。 将Cron表达式移动到属性文件 在寻找解决问题的方法时我遇到了这个问题。 本博客文章中描述的解决方案就是基于该讨论。 我们解决方案的要求如下 生产和开发环境必须具有不同的配置。 在开发环境中运行计划任务时必须每秒调用一次。 在生产环境中运行计划任务时必须每分钟调用一次。 我们可以通过执行以下步骤来满足这些要求 配置Maven。 创建属性文件。 配置应用程序上下文。 修改任务类。 让我们开始吧。 配置Maven 我们可以按照以下步骤配置Maven 为开发和生产环境创建概要文件。 配置资源过滤。 让我们继续前进找出实现方法。 为开发和生产环境创建配置文件 我们记得我们必须为开发和生产环境创建Maven配置文件。 我们可以按照以下步骤创建在开发环境中使用的配置文件 将新的配置文件添加到POM文件的配置文件部分。 将创建的配置文件的ID设置为“ dev”。 确保默认情况下开发配置文件处于活动状态。 创建一个名为build.profile.id的属性并将其值设置为dev。 我们可以按照以下步骤创建生产资料 将新的配置文件添加到POM文件的配置文件部分。 将创建的配置文件的ID设置为“ prod”。 创建一个名为build.profile.id的属性并将其值设置为prod。 pom.xml文件的配置文件部分如下所示 profilesprofileiddev/idactivationactiveByDefaulttrue/activeByDefault/activationpropertiesbuild.profile.iddev/build.profile.id/properties/profileprofileidprod/idpropertiesbuild.profile.idprod/build.profile.id/properties/profile /profiles 在配置构建的资源过滤时将使用build.profile.id属性。 让我们看看这是如何完成的。 配置资源过滤 我们可以按照以下步骤配置资源过滤 配置包含配置文件特定属性的配置文件的位置 build.profile.id属性的值标识使用的配置文件。 配置资源目录的位置并激活资源过滤。 pom.xml文件的相关部分如下所示 filtersfilterprofiles/${build.profile.id}/config.properties/filter /filters resourcesresourcefilteringtrue/filteringdirectorysrc/main/resources/directory/resource /resources 创建属性文件 我们可以按照以下步骤创建所需的属性文件 我们必须为开发环境创建一个属性文件。 我们必须为生产环境创建一个属性文件。 我们必须创建一个属性文件该文件由我们的应用程序读取。 让我们开始吧。 为开发环境创建属性文件 我们可以按照以下步骤为开发环境创建属性文件 在个人档案/ dev目录中创建一个名为config.properties的文件 。 在scheduling.job.cron属性的值设置为0-59 * * * * *。 这样可以确保任务每秒被调用一次。 profiles / dev / config.properties文件的内容如下所示 scheduling.job.cron0-59 * * * * *为生产环境创建属性文件 我们可以按照以下步骤为生产环境创建属性文件 在个人档案/ prod目录中创建一个名为config.properties的文件 。 在scheduling.job.cron属性的值设置为0 0-59 * * * *。 这样可以确保每分钟调用一次任务。 profile / prod / config.properties文件的内容如下所示 scheduling.job.cron0 0-59 * * * *创建我们的应用程序的属性文件 我们可以按照以下步骤创建应用程序的属性文件 在src / main / resources目录中创建一个名为application.properties的文件。 将schedule.job.cron属性的值设置为$ {scheduling.job.cron}。 这样可以确保将占位符替换为正确的cron表达式。 src / main / resources / application.properties文件的内容如下所示 scheduling.job.cron${scheduling.job.cron} 配置应用程序上下文 我们可以使用Java配置类或XML配置文件来配置应用程序的应用程序上下文。 下面介绍了这两个选项。 Java配置 我们可以按照以下步骤创建应用程序上下文配置类 创建一个名为ExampleApplicationContext的类。 用Configuration注释对类进行注释。 通过使用EnableScheduling注释对类进行注释来启用调度。 用ComponentScan注释为类添加注释并配置扫描的软件包。 用PropertySource注释对类进行注释并确保从称为class.path的属性文件application.properties中加载属性。 创建一个新的PropertySourcesPlaceHolderConfigurer bean。 我们的应用程序上下文配置类的源代码如下所示 import org.springframework.context.annotation.*; import org.springframework.context.support.PropertySourcesPlaceholderConfigurer; import org.springframework.core.io.ClassPathResource; import org.springframework.scheduling.annotation.EnableScheduling;Configuration EnableScheduling ComponentScan(basePackages {net.petrikainulainen.spring.trenches.scheduling }) PropertySource(classpath:application.properties) public class ExampleApplicationContext {Beanpublic PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {PropertySourcesPlaceholderConfigurer properties new PropertySourcesPlaceholderConfigurer();properties.setLocation(new ClassPathResource( application.properties ));properties.setIgnoreResourceNotFound(false);return properties;} }XML配置 我们可以按照以下步骤创建应用程序上下文配置文件 使用上下文名称空间的property-placeholder元素从名为class.path的属性文件application.properties中加载属性。 使用上下文名称空间的注释配置元素来确保从我们的bean类中检测到“常规”注释。 使用上下文名称空间的component-scan元素来配置扫描的软件包。 通过使用任务名称空间的注释驱动元素来启用调度。 我们的应用程序上下文配置文件的源代码如下所示 ?xml version1.0 encodingUTF-8? beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:taskhttp://www.springframework.org/schema/taskxsi:schemaLocationhttp://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsdhttp://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsdhttp://www.springframework.org/schema/task http://www.springframework.org/schema/task/spring-task-3.1.xsdcontext:property-placeholder locationclasspath:application.properties ignore-resource-not-foundfalse/context:annotation-config/context:component-scan base-packagenet.petrikainulainen.spring.trenches.scheduling/task:annotation-driven/ /beans 修改计划任务 最后一步是修改任务类并确保从application.properties文件中读取了使用的cron表达式。 我们可以通过将Scheduled批注的cron属性的值设置为$ {scheduling.job.cron}来实现。 ScheduledJob类的源代码如下所示 import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.scheduling.annotation.Scheduled; import org.springframework.stereotype.Component;Component public class ScheduledJob {private static final Logger LOGGER LoggerFactory.getLogger(ScheduledJob.class);Scheduled(cron ${scheduling.job.cron})public void run() {LOGGER.debug(run());} }摘要 现在我们创建了一个计划任务该任务从属性文件中读取使用的cron表达式。 这篇博客文章教会了我们三件事 我们了解到对使用的cron表达式进行硬编码会使在不同环境中使用不同配置变得困难。 我们了解了如何使用Maven将特定于配置文件的配置属性分离为特定于配置文件的配置文件。 我们学习了配置应用程序的应用程序上下文并从属性文件中读取使用的cron表达式。 与往常一样此博客文章的示例应用程序可在Github上获得 。 参考资料 从沟槽中汲取经验 Petri Kainulainen博客上来自JCG合作伙伴 Petri Kainulainen 的Scheduled注释使用环境特定的Cron表达式 。 翻译自: https://www.javacodegeeks.com/2013/07/spring-from-the-trenches-using-environment-specific-cron-expressions-with-the-scheduled-annotation.html
http://www.lebaoying.cn/news/98069.html

相关文章:

  • 地方网站域名选择色块网站设计
  • 太原企业建站系统府网站建设先进个人
  • 可以做电影网站的主机国家基础设施建设网站
  • 中国建设官方网站首页深圳百度推广属于哪家公司
  • 设计教程网站有哪些网站建设的公司哪家强
  • 局域网网站建设多少钱益阳一站式网站建设公司
  • 吉林省城市建设学校网站网站策划运营方案
  • 教育网站 怎么做吸引人昌乐网站制作价格
  • 莱芜举报网站虚拟主机上的网站上传方式
  • 网站开发和软件开发那个简单上海做手机网站建设
  • 网站之间如何交换友情链接wordpress 弹出视频播放
  • dede织梦网站网站建设市场需求分析
  • 建设网站准备资料网站流量用什么表示
  • 校园招聘网站策划书网络营销的方法和手段
  • 盗版网站怎么做的西部数码网站助手4.0
  • 房地产开发公司网站建设方案html5开发微网站
  • 哪个网站可以做曝光台企业网站 三合一
  • wordpress网站无法打开深圳大型网站建设服务公司
  • 太仓市住房和城乡建设局官方网站淄博网站建设乐达
  • app调用网站电子商务网站开发文档
  • 贷款网站建设网站开发可能遇到的问题
  • 外贸网站域名规范12388举报网站建设管理
  • 狮山镇建设局网站浏览器主页被篡改2345
  • 浙江宝业建设集团网站app下载推广平台
  • 不花钱自己可以做网站吗淮南寿县
  • 网站下载视频方法河南省副厅长
  • easyui 网站开发实现专业的网页设计和网站建设公司
  • 做电子商务网站的总结三亚兼职网站
  • 好的网站推荐下 感谢珠海移动网站建设公司
  • 网站的导航栏深圳免费网站优化网络推广