idea2016创建maven管理的web项目,做个spring跟quartz的定时任务
如何在idea中创建一个maven管理的web模块,对于刚开始用idea的人来说还是有点问题的,今天俺就来个demo让大家看下,并且完成spring跟quartz的定时任务demo
首先创建模块之前首先配置好自己开发工具中的maven
1. File->settins //配置内容跟eclipse中大同小异,这里不做过多阐述
2. 本人就不创建项目了,创建个模块
后面的直接下一步就可以了,太简单了不贴图了
3. maven项目的大体现在已经创建好了,但是还没完,继续看
当创建成功后我们打开发现main目录下并没有java跟test目录,我们手动创建个java目录,
但是此时创建的java目录还没法给里面添加包&类&接口,现在来个项目设置File->Project Structure->Project->Project compiler output 用来设置编译后的class文件存放位置,这个也还可以在File->Project Structure->Module->项目->path来设置编译后的文件路径,后者更靠谱些,这个本人未经实践
这时候编译文件的存放地址算是弄好了,下来设置很重要,少了下面这种图的设置,模块中的java文件没法创建包&类&接口等
有了上面这个我们再回到项目发现就可以在java'文件中创建包了,测试代码在sources旁边可以设置
4. 完整的项目已经弄好了,现在我们给pom.xml中来添加依赖,这里需要注意eclipse中是当把依赖添加进去我们保存的时候就会自动下载相关jar,但是idea不是这样的,idea需要手动执行去下载jar,步骤为:pom.xml->鼠标右击->Maven->Reimport 这时候idea就自动为我们下载jar了
5. 给项目来个tomcat
找打 Edit configuration
到了这里,tomcat算是部署到项目中了,debug启动测试
截止到目前一个javaee的maven项目已经完全建好了
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
下来我要在此项目中添加个spring跟quartz的控制的定时任务案例
本案例的定时任务是定时的,时间设置成了死值,要想灵活控制时间请看其他案例
首先web.xml中把spring的xml文件加进去
<context-param> <param-name>contextConfigLocation</param-name> <param-value>classpath*:application.xml</param-value> </context-param> <listener> <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class> </listener>
然后这里有两个任务类,Job01根Job02
@Component("job1")
public class Job01 extends QuartzJobBean{
protected void executeInternal(JobExecutionContext jobExecutionContext) throws JobExecutionException {
String message = (String) jobExecutionContext.getJobDetail().getJobDataMap().get("ssss");
System.out.println("我是任务11111");
}
}
---------------------------------------------------------------------------------
public class Job02 {
public void sayHello() {
System.out.println(new Date() + " -> Hello, 我是任务 2");
}
}
最后一个是spring的xml文件配置
<?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-2.5.xsd"> <context:component-scan base-package="*"/> <!-- 任务1配置 --> <bean id="jobDetail_1" class="org.springframework.scheduling.quartz.JobDetailBean"> <property name="jobClass" value="com.wyw.Job01"/> </bean> <bean id="cronTrigger_1" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"><ref bean="jobDetail_1" /></property> <!-- 每三秒钟执行一次 --> <property name="cronExpression"><value>0/3 * * * * ?</value></property> </bean> <!-- 任务2配置 --> <!--<bean name="job2" class="com.wyw.Job02"/> --> <bean id="jobDetail_2" class="org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"> <!--执行类--> <property name="targetObject"><ref bean="job2" /></property> <!--执行类中的方法--> <property name="targetMethod"><value>sayHello</value></property> </bean> <bean id="cronTrigger_2" class="org.springframework.scheduling.quartz.CronTriggerBean"> <property name="jobDetail"><ref bean="jobDetail_2" /></property> <property name="cronExpression"><value>0/1 * * * * ?</value></property> </bean> <!-- 总配置 --> <bean class="org.springframework.scheduling.quartz.SchedulerFactoryBean"> <!-- 添加触发器 --> <property name="triggers"> <list> <ref bean="cronTrigger_1" /> <ref bean="cronTrigger_2" /> </list> </property> </bean> <!-- "0 0 12 * * ?" 每天中午12点触发 "0 15 10 ? * *" 每天上午10:15触发 "0 15 10 * * ?" 每天上午10:15触发 "0 15 10 * * ? *" 每天上午10:15触发 "0 15 10 * * ? 2005" 2005年的每天上午10:15触发 "0 * 14 * * ?" 在每天下午2点到下午2:59期间的每1分钟触发 "0 0/5 14 * * ?" 在每天下午2点到下午2:55期间的每5分钟触发 "0 0/5 14,18 * * ?" 在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发 "0 0-5 14 * * ?" 在每天下午2点到下午2:05期间的每1分钟触发 "0 10,44 14 ? 3 WED" 每年三月的星期三的下午2:10和2:44触发 "0 15 10 ? * MON-FRI" 周一至周五的上午10:15触发 "0 15 10 15 * ?" 每月15日上午10:15触发 "0 15 10 L * ?" 每月最后一日的上午10:15触发 "0 15 10 ? * 6L" 每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6L 2002-2005" 2002年至2005年的每月的最后一个星期五上午10:15触发 "0 15 10 ? * 6#3" 每月的第三个星期五上午10:15触发 每天早上6点 0 6 * * * 每两个小时 0 */2 * * * 晚上11点到早上8点之间每两个小时,早上八点 0 23-7/2,8 * * * 每个月的4号和每个礼拜的礼拜一到礼拜三的早上11点 0 11 4 * 1-3 1月1日早上4点 0 4 1 1 * --> </beans>
后续会将定时任务的时间改成可控制的