首先定义一个工厂类,生成你的订单号序列。
注意里面的静态方法 reset方法, 这个用来在每天00:00:00重置。
这个方法由任务调度框架Quartz调用。
首先定义一个job
配置Quartz,在每天零点触发触发器就可以了。
Spring 的配置文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
package
bean;
import
java.text.DecimalFormat;
import
java.text.SimpleDateFormat;
import
java.util.Date;
import
org.springframework.beans.factory.FactoryBean;
public
class
SequenceFactoryBean
implements
FactoryBean<String> {
private
static
long
counter =
0
;
public
synchronized
String getObject()
throws
Exception {
String date =
new
SimpleDateFormat(
"yyyy-MM-dd"
).format(
new
Date()) +
" + "
;
String sequ =
new
DecimalFormat(
"00000000"
).format(counter ++);
return
date + sequ;
}
public
Class<String> getObjectType() {
return
String.
class
;
}
public
boolean
isSingleton() {
return
false
;
}
public
static
void
reset() {
SequenceFactoryBean.counter =
0
;
}
}
|
注意里面的静态方法 reset方法, 这个用来在每天00:00:00重置。
这个方法由任务调度框架Quartz调用。
首先定义一个job
1
2
3
4
5
6
7
8
9
10
|
package
job;
import
bean.SequenceFactoryBean;
public
class
SequenceResetJob {
public
void
execute() {
SequenceFactoryBean.reset();
}
}
|
配置Quartz,在每天零点触发触发器就可以了。
Spring 的配置文件。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
<
bean
id
=
"sequence"
class
=
"bean.SequenceFactoryBean"
/>
<
bean
id
=
"job"
class
=
"job.SequenceResetJob"
/>
<
bean
id
=
"jobDetail"
class
=
"org.springframework.scheduling.quartz.MethodInvokingJobDetailFactoryBean"
>
<
property
name
=
"targetObject"
ref
=
"job"
/>
<
property
name
=
"targetMethod"
value
=
"execute"
/>
</
bean
>
<
bean
id
=
"cronTrigger"
class
=
"org.springframework.scheduling.quartz.CronTriggerBean"
>
<
property
name
=
"jobDetail"
ref
=
"jobDetail"
/>
<
property
name
=
"cronExpression"
value
=
"0 0 0 * * ?"
/>
</
bean
>
<
bean
name
=
"quartzScheduler"
class
=
"org.springframework.scheduling.quartz.SchedulerFactoryBean"
>
<
property
name
=
"triggers"
>
<
list
>
<
ref
bean
=
"cronTrigger"
/>
</
list
>
</
property
>
</
bean
>
|