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

平台网站开发风险杭州网站建设(推荐乐云践新)

平台网站开发风险,杭州网站建设(推荐乐云践新),怎么开发一个游戏,网站专栏怎么做漂亮在上一篇文章中 #xff0c;我们演示了如何在Spring容器中创建和配置带批注的Quartz作业。 我们使用了一个类级别的注释将一些元数据添加到实现Quartz Job的bean中。 批注定义了作业的名称#xff0c;组及其cron表达式。 后来#xff0c;大部分代码专用于处理该批注#xf… 在上一篇文章中 我们演示了如何在Spring容器中创建和配置带批注的Quartz作业。 我们使用了一个类级别的注释将一些元数据添加到实现Quartz Job的bean中。 批注定义了作业的名称组及其cron表达式。 后来大部分代码专用于处理该批注查找bean读取批注创建JobDetail和CronTrigger 应用它们的属性并将它们传递给调度程序。 如果您正在从事中等规模的大型Spring项目那么您可能很快就会开始看到样板配置和代码可以通过将其封装在批注中来进行重构。 QuartzJob注释是一个很好的例子。 在masetta中我们尝试使用Polyforms项目使用注释来实现DAO方法该方法通常由围绕JPA查询的一些样板代码组成。 很快我们发现它并没有像我们所需要的那样可配置和可扩展在处理命名查询参数和初始化顺序问题方面存在问题因为Polyforms如何使用方面来实现抽象方法。 此外我们使用了自定义注释并“手动”处理了它们但是它们的数量太多了…… 我们想到的是span 。 Spann是spring框架的开源扩展它允许使用注释对spring bean进行高级配置。 为了窥探spann的功能之一我将依靠我们之前的文章并实现类似的功能。 我将使用spann而不是编码。 如您所见实现非常简短。 总览 该代码使用Spring的本地Quartz调度实现如spring参考中所述 。 Spring的MethodInvokingJobDetailFactoryBean用于创建JobDetail bean它将作业执行委托给另一个bean的方法。 作为触发器我使用spring的CronTrigger实现。 为了创建和配置JobDetail和CronTrigger Bean我将使用spann的BeanConfig注释创建方法级别的注释。 代码 可以使用以下命令将示例代码作为跨项目的Maven项目检出 svn co http://spann.googlecode.com/svn/trunk/spann-quartz-example 它包括一个带有所有必需的依赖项坐标的pom和一个功能测试用例。 1.创建注释以配置MethodInvokingJobDetailFactoryBean package com.masetta.spann.quartzexample.annotations;import java.lang.annotation.*; import org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean; import com.masetta.spann.metadata.common.Artifact; import com.masetta.spann.spring.base.beanconfig.*; import com.masetta.spann.spring.base.beanconfig.factories.*;Retention(RetentionPolicy.RUNTIME) Target({ElementType.METHOD}) BeanConfig(createMethodInvokingJobDetailFactoryBean.class,attachedAttached(rolequartzJob,scopeArtifact.METHOD),explicittrue,wire{WireMeta(propertytargetObject,scopeArtifact.CLASS,factoryBeanReferenceFactory.class),WireMeta(propertytargetMethod,scopeArtifact.METHOD,factoryMetadataNameFactory.class)}) public interface QuartzJob {String name();String group();boolean concurrent() default true;} 该BeanConfig注释创建和使用QuartzJob的注释的属性 名称 组和并发 配置一个MethodInvokingJobDetailFactoryBean中 。 已配置的bean通过“ quartzJob ”角色“附加”到带注释的方法。 稍后将使用它来将JobDetail bean注入触发器。 “连接”是内部跨度概念。 它允许通过指定工件例如类或方法和语义角色此处为“ quartzJob”而不是按名称来引用bean。 这将启用spanning最强大的功能注释合成 此处也将进行演示。 wire属性使用给定工厂使用从当前工件的元数据 在本例中为MethodMetadata ScanContext和Annotation填充的值设置targetObject和targetMethod属性。 2.创建一个cron触发器注释 package com.masetta.spann.quartzexample.annotations;import java.lang.annotation.*; import org.springframework.scheduling.quartz.CronTriggerBean; import com.masetta.spann.metadata.common.Artifact; import com.masetta.spann.spring.base.beanconfig.*;Retention(RetentionPolicy.RUNTIME) Target(ElementType.METHOD) BeanConfig(createCronTriggerBean.class,attachedAttached(rolequartzTrigger,scopeArtifact.METHOD), explicittrue,referencesSpannReference(propertyjobDetail,rolequartzJob, scopeArtifact.METHOD) ) public interface Cron {String cronExpression();String timeZone() default ;String misfireInstructionName() default ;String[] triggerListenerNames() default {}; } 再次使用BeanConfig批注这次创建和配置CronTriggerBean 。 显式属性指示如何处理默认的注释属性值。 当explicit为true时默认属性值将被忽略。 例如 时区 所述CronTriggerBean的misfireInstructionName和triggerListenerNames属性将仅在相应的注解的属性值集合; 默认值将被静默忽略。 使用references属性将jobDetail属性设置为在步骤1中创建的beans​​pann将查找附加到具有“ quartzJob ”角色的带注释方法的bean。 请注意 timeZone注释属性类型为String 而CronTriggerBean的timeZone属性的类型为TimeZone 。 该值由Spring本地处理使用Spring的PropertyEditor工具透明地转换为TimeZone 。 您甚至可以使用Spring的$ {…}语法进行表达式替换。 签入的代码包含用于创建间隔触发器的第三个注释此示例稍后将使用它。 3.配置span和spring的SchedulerFactoryBean 我们的applicationContext.xml非常简短 beans xmlnshttp://www.springframework.org/schema/beansxmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexmlns:contexthttp://www.springframework.org/schema/contextxmlns:spannhttp://os.masetta.com/spann/schema/spann-1.0xsi:schemaLocation http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.0.xsd http://os.masetta.com/spann/schema/spann-1.0 http://os.masetta.com/spann/schema/spann-1.0.xsdcontext:component-scan base-packagecom.masetta.spann.quartzexample/spann:scan base-packagecom.masetta.spann.quartzexample/bean classorg.springframework.scheduling.quartz.SchedulerFactoryBean autowire”byType”//beans 如果您知道spring那么这里就没有什么魔术了如spring参考中所述我配置了spring的组件扫描spann扫描和SchedulerFactoryBean 仅在这里我让spring将所有触发bean自动装配到相应的属性因此autowire byType 。 4.使用注释 package com.masetta.spann.quartzexample.test;import java.util.concurrent.atomic.AtomicInteger;import org.springframework.stereotype.Component;import com.masetta.spann.quartzexample.annotations.*; import com.masetta.spann.spring.core.annotations.VisitMethods;Component VisitMethods public class Savana {private AtomicInteger newElemphants new AtomicInteger();private AtomicInteger newZebras new AtomicInteger();QuartzJob(namezebraBorn,groupsavana)Interval(repeatInterval200)public void zebraBorn() {newZebras.incrementAndGet();}QuartzJob(nameelephantBorn,groupsavana)Cron(cronExpression0/2 * * ? * * *)public void elephantBorn() {newElemphants.incrementAndGet();}public int getNewZebras() {return newZebras.get();}public int getNewElephants() {return newElemphants.get();}} 该bean是通过spring的Component注释配置的。 它是普通的Spring bean并且任何Spring或方面注释 Autowired Resource Transactional 都将由Spring本地处理。 默认情况下spann仅处理类级别的注释。 VisitMethods指示spann也访问此类的方法并处理其注释如果存在。 新注释的使用很简单每个计划的方法都应使用QuartzJob 创建委托的JobDetail 和Cron或Interval注释此处未显示但在svn中可用进行注释。 。 这也演示了spann的批注组合 该批注组合使批注可以粒度化和可插入 QuartzJob可以与配置触发器 bean的任何注释一起使用而Cron和Interval可以与配置JobDetail bean的任何注释一起使用。 摘要 Spann是Spring框架的开源扩展它允许使用注释进行高级Bean配置。 该代码演示了spann的BeanConfig批注如何使用批注创建Quartz计划的作业。 该示例使用spann的高级API即BeanConfig批注该API在spann项目本身中实现。 Spann的高级API包括其他允许方法替换用于在运行时实现抽象方法内部使用cglib进行实现的方法合成适配器创建和全面的JPA Query支持的注释。 Spann与spring的集成非常紧密它创建了“普通的老式spring bean”就像用XML或Component批注定义的那样。 这使您可以利用spring的所有bean功能可以通过spring的ApplicationContext检索bean具有正常的bean生命周期可以进行后处理例如用于表达式替换自动装配使用方面进行拦截通过JMX管理等等。上。 您不需要黑客和变通办法也不需要重新实现或复制和调整现有的Spring代码。 此外您的样板代码更少样板配置也更少。 与BeanConfig和spann的其他注释一样灵活在某些用例中它们没有涉及。 但是Span的低级API允许从头开始创建新的注释从而为开发人员提供了对bean定义的创建和配置的精细控制。 您甚至可以通过实现自己的MetadataVisitor来使用spann处理任何其他类元数据 可以选择全部忽略注释。 参考 SpringQuartz与Custom Annotation的集成这是我们W4G合作伙伴 Ron Piterman的SPANN方法 。 相关文章 SpringQuartz和JavaMail集成教程 在运行时交换出Spring Bean配置 Spring MVC3 Hibernate CRUD示例应用程序 使用Spring将POJO公开为JMX MBean Java教程和Android教程列表 翻译自: https://www.javacodegeeks.com/2011/10/spring-quartz-integration-with-custom_31.html
http://www.yutouwan.com/news/306603/

相关文章:

  • 如何建设百度网站python快速搭建网站
  • 网站整体配色方案调用wordpress数据
  • 做h5找图网站怎么创建网页快捷方式到桌面
  • 易语言怎么做点击按钮打开网站wordpress下安装论坛 伪静态
  • 广东手机网站建设多少钱网站备案照
  • 扬州网站建设坦克大战网站开发课程设计报告
  • 网站域名注册后怎么建设做响应式网站制作
  • 石油化工建设网站wordpress quizzin
  • 常州网站建设方案wordPress主题模板站
  • 网站群 建设 方案平谷头条新闻
  • 站长工具使用网站开发流程框架
  • 淘宝数据网站开发搜索引擎seo关键词优化效果
  • 焦作网站建设公司排名网站可信度验证
  • 免费公司网站模板镇江关键词优化
  • 网站虚拟建设策划安卓aso优化
  • wordpress怎么设置语言为中文什么是优化
  • 网站的优化与推广上海全屋整装哪家好
  • 网站开发是某某网站建设策划书2000字
  • 怎么样优化网站seoLight模板WordPress
  • wordpress网站换字体颜色wordpress在线点播
  • .net网站开发教程创办网站要多少钱
  • vue 做网站全椒有做网站的吗
  • 男女做那个的的视频网站国外化工网站模板
  • 河南怎么建设网站搭建网站要多久
  • 做图必备素材网站网站开发哈尔滨网站开发公司电话
  • 海南住房和城乡建设厅网站首页40个免费网站推广平台
  • 给平面设计素材网站做素材挣钱吗网站备案上传照片几寸
  • 自己建站流程电子商务网站建设课后作业
  • 临海市住房与城乡建设规划局网站wordpress wmv
  • 官方网站建设的必要迅雷网站做爰视频