-
怎么动态给targetMethod传参数?5
<!-- ======================================================================= Job 定义 =========================================================================--> <bean id="subsidyJob" class="com.payplat.dacq.scheduling.job.SubsidySchemeJob" /> <!-- ======================================================================= JobDetail 定义 =========================================================================--> <bean id="subsidyJobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="subsidyJob" /> <property name="targetMethod" value="execute" /> <property name="concurrent" value="false" /> <!-- <property name="arguments" value="argsValue"/>--> </bean> <!-- ======================================================================= Trigger 定义 (由方法动态生成) =========================================================================--> <!-- ======================================================================= 配置调度器,容器启动就会执行调度程序;如果lazy-init='false',则容器启动时就会执行调度程序; 如果lazy-init='true',则需要实例化该bean才能执行调度程序 =========================================================================--> <bean id="subsidyScheduler" class="org.springframework.scheduling.quartz.SchedulerFactoryBean" lazy-init="false"> </bean>
<!-- <property name="arguments" value="argsValue"/>-->
去掉上面的注释,如果我的exceute方法带了参数,如下:
//SubsidySchemeJob.java public class SubsidySchemeJob { public void execute(String args) { System.out.println("方案开始执行"+args); } }
程序运行后会打印:方案执行argsValue
从这里可以看出,可以传参给任务,现在我想在如下code
//SubsidyCronTrigger.java @Service("SubsidyCronTrigger") public class SubsidyCronTrigger { @Autowired() @Qualifier("subsidyScheduler") Scheduler scheduler; @Autowired() @Qualifier("subsidyJobDetail") JobDetail jobDetail; /** * 添加计划 * @param triggerName * @param cronExpression * @throws SchedulerException * @throws ParseException */ public void createScheduleJob(String triggerName,String[] cronExpression) throws SchedulerException, ParseException { for(int i = 0 ;i<cronExpression.length;i++){ CronTrigger cronTrigger = new CronTrigger(triggerName,"group"+i); try { // setup CronExpression CronExpression cexp = new CronExpression(cronExpression[i]); // Assign the CronExpression to CronTrigger cronTrigger.setCronExpression(cexp); } catch (Exception e) { e.printStackTrace(); } jobDetail.setName("detail"+i); scheduler.scheduleJob(jobDetail,cronTrigger); } scheduler.start(); } }
//现在我想在动态生成trigger的时候把i(相当于一个flag)传给job里的execute,该怎么写呢?
@Test public void subsidyTest(){ ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext-energydata.xml"); SubsidyCronTrigger ss = (SubsidyCronTrigger)context.getBean("SubsidyCronTrigger"); try { ss.createScheduleJob("test1", new String[]{"*/1 * * * * ?","*/3 * * * * ?"}); } catch (SchedulerException e) { e.printStackTrace(); } catch (ParseException e) { e.printStackTrace(); } }
2013年11月14日 15:53
2个答案 按时间排序 按投票排序
-
设置参数使用 org.quartz.JobDetail.setJobDataMap(JobDataMap jobDataMap) 方法可以为job设置参数.
execute 方法是获取参数public class KettleQuartzJob implements org.quartz.Job { public void execute(JobExecutionContext context) throws JobExecutionException { JobDataMap dataMap = context.getJobDetail().getJobDataMap(); String type = dataMap.getString("type"); //...其他代码 } }
2013年11月18日 17:30
相关推荐
我们需要在这里编写IL代码,以实现方法的入口、参数验证、调用委托以及返回结果。 5. **完成类型**:使用`TypeBuilder.CreateType()`方法,将动态类型实例化。至此,我们已经创建了一个新的类型,这个类型具备了...
CGlib,全称为Code Generation Library,是Java编程语言中的一个代码生成库,广泛应用于动态代理、性能监控以及AOP(面向切面编程)等领域。它是一个强大的、高性能的代码生成库,可以在运行期扩展Java类与实现Java...
### Spring动态定时器详解 #### 一、动态定时任务概念 动态定时任务,是指由用户或系统根据实际需求动态设定的定时任务。这类任务的触发时间并非固定不变,而是可以根据实时情况灵活调整。传统上,配置定时任务...
java动态代理+自定义注解,实现改变目标方法行为(不入侵方法本身),支持自定义注解配置目标方法的前置、后置方法。实现效果如下:@MethodPreWrapper(clazz = MethodWrapper.class, methodName = "preMethod")@...
- `invoke()`方法是核心,它接收三个参数:代理对象、被调用的方法和方法的参数。开发者可以在这个方法中实现自定义的逻辑,比如日志记录、事务管理等。 - 在`invoke()`方法中,通常会调用原始目标对象的相应方法...
<property name="targetMethod" value="simpleJobTest"/> ``` 这里的 `schedulerJobDetail` 定义了一个 JobDetail,指定了目标对象 `scheduleInfoAction` 及其执行的方法 `simpleJobTest()`。`concurrent` 属性...
### Spring 普通定时任务与动态设置定时任务详解 #### 一、Spring 定时任务简介 在软件开发过程中,经常会遇到需要周期性执行的任务,例如数据备份、定时发送邮件等。对于这类需求,Spring 提供了一种简单且灵活的...
当我们需要动态设置定时任务,即任务的执行间隔可以根据用户需求或外部条件进行调整时,Spring与Quartz的集成提供了解决方案。 1. **Quartz与Spring的集成** Spring通过`SchedulerFactoryBean`来集成Quartz,创建...
本文将详细介绍如何在Spring中设置动态定时任务,特别关注如何动态设置`cronExpression`。 首先,我们需要了解Quartz在Spring中的基本配置。在Spring配置文件中,我们通常创建三个主要的bean: 1. `...
<property name="targetMethod" value="simpleJobTest"/> * * * * ?"/> ``` 在这个配置中: 1. `schedulerJobDetail`定义了一个名为`simpleJobTest`的方法作为定时任务的执行体,该方法位于...
### Quartz在Spring中动态设置cronExpression的关键知识点 #### 1. cronExpression的理解与构成 - **定义**:cronExpression是一种用于定义周期性任务执行规则的字符串格式,它由六个或七个字段组成,这些字段通过...
public String targetMethod(@ModelAttribute("normalAttribute") String normalAttr, Model model, @ModelAttribute("redirectAttribute") String redirectAttr) { // 使用传递的数据... } ``` 5. **源码解析...
例如,如果你有一个服务接口或组件,允许用户设定自定义的定时规则,你可以将新设定的CRON表达式传递给这个接口或组件,然后更新`CronTriggerBean`的`cronExpression`属性。这将立即更新触发器的定时规则,从而改变...
<property name="targetMethod" value="execute"/> ``` 最后,创建一个Trigger来决定何时启动`MyJob`。Trigger类型有多种,比如SimpleTrigger、CronTrigger等,这里以CronTrigger为例,设置一个cron表达式来指定...
<property name="targetMethod" value="executeTask"/> ``` 这里,`myService`是包含执行任务方法的服务类,`executeTask`是实际执行的方法。 然后,创建`Trigger` Bean,用于指定任务何时触发。例如,使用`...
以下将详细介绍Spring中如何配置和管理动态定时任务。 1. **Quartz与Spring的集成** 在Spring中使用Quartz,首先需要配置`MethodInvokingJobDetailFactoryBean`,它定义了定时任务的具体行为,即哪个对象的哪个...
<property name="targetMethod" value="simpleJobTest"/> ``` 2. **配置 CronTrigger**: - 创建一个 `CronTriggerBean` bean,关联到上面定义的 JobDetail,并设置初始的 `cronExpression`。例如,`0/10 * * ...
<property name="targetMethod" value="yourMethodName"/> * * * * ?"/> ``` 这里的配置定义了一个名为`jobDetail`的Job,它调用的是名为`yourServiceBean`的Bean的`yourMethodName`方法。`...
6. **生成Tweak**:最后,你需要将Swift代码编译成动态库,并且创建一个.tweak.xm文件来指定动态库的加载时机和目标应用。这个文件通常是一个Objective-C的源码文件,其中包含`- (void)load`方法,用于在应用程序...