spring mvc定时任务

当需要定时缓存,或者做一些定时任务时,最早可能是页面发请求(页面定时),还有就是在配置文件配置在web.xml

但是遇到各种问题,例如初次启动默认多次加载多次(可解决),或者‘定时任务的下一层方法无法获取自动注入的service’(笨办法是通过参数传过去)等等,实在是费时费力

spring mvc其实是自带定时任务配置的,并且可以使用自动注入

实现方法

   1》、在springmvc的配置文件中加入

1:

xmlns:task="http://www.springframework.org/schema/task"
2:xsi:schemaLocation下加

http://www.springframework.org/schema/task 
http://www.springframework.org/schema/task/spring-task.xsd
3:

  <!-- task任务扫描注解 -->  
    <task:annotation-driven/> 

  <!-- 配置你的方法类的路径 --> 

    <context:component-scan base-package="com.trs" /> 
2》、可以新建一个类

@Component
public class CacheManager { 
	@Autowired
	private BehaviorService behaviorService;
/*
 * 添加定时任务
 */
//@Scheduled(cron="0 0/5 14 * * ?") //14点开始间隔5秒执行  
@Scheduled(cron = "0 0 1 * * ?")
public void taskCycle(){
	/*
	 * 也可以使用自动注入的Service了
	 */
     System.out.println("success!对于定时的方法要加Scheduled,其余不加,含有定时任务的类要用@Component以保证被扫描");
} 
public String tday(){
	    Calendar   c   =   Calendar.getInstance();   
	    c.add(Calendar.DAY_OF_MONTH, -1);  
	    SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");  
	    String mDateTime=formatter.format(c.getTime());  
	    return mDateTime;
	     System.out.println("我是不是没有被执行");
}
} 
 

就可以了!



Spring MVC 和 Quartz 是两个不同的框架,可以结合使用来实现定时任务。 首先,你需要配置 Quartz 的相关依赖和配置文件。你可以在 Spring 的配置文件中添加以下内容: ```xml <bean id="jobDetail" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <property name="targetObject" ref="yourTaskBean" /> <property name="targetMethod" value="yourTaskMethod" /> </bean> <bean id="cronTrigger" class="org.springframework.scheduling.quartz.CronTriggerFactoryBean"> <property name="jobDetail" ref="jobDetail" /> <property name="cronExpression" value="0 0 0 * * ?" /> <!-- 在每天凌晨执行任务 --> </bean> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <property name="triggers"> <list> <ref bean="cronTrigger" /> </list> </property> </bean> ``` 上述配置中,`yourTaskBean` 是你实现的定时任务的类,`yourTaskMethod` 是该类中的定时任务方法。`cronExpression` 是定时任务的执行时间表达式,上述例子中表示在每天凌晨执行任务。 然后,在你的 Spring MVC 控制器中,你可以通过注入一个 Scheduler 对象来启动和停止定时任务: ```java @Autowired private Scheduler scheduler; @RequestMapping("/startTask") public String startTask() { try { scheduler.start(); return "定时任务已启动"; } catch (SchedulerException e) { e.printStackTrace(); return "定时任务启动失败"; } } @RequestMapping("/stopTask") public String stopTask() { try { scheduler.shutdown(); return "定时任务已停止"; } catch (SchedulerException e) { e.printStackTrace(); return "定时任务停止失败"; } } ``` 上述代码中,`startTask` 方法用于启动定时任务,`stopTask` 方法用于停止定时任务。 这样,当你访问 `/startTask` 接口时,定时任务将会启动;当你访问 `/stopTask` 接口时,定时任务将会停止。 希望以上信息能对你有所帮助!如果有任何问题,请随时提问。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值