在项目中,发现Spring的定时任务中用ThreadLocal来保存上下文信息,且上下文信息中有一个属性在后面入库时是做为主键值。总觉得这里应该有问题,因为没有去看过Spring的定时任务的具体实现,也不知定时任务用没用线程池以及如何使用的,但如何用了线程池(且我觉得从性能和常理推测来看应该是要用的),用ThreadLocal保存上下文信息,并在后续使用(且使用完没有做remove),那么后面就一定会出现主键冲突呀。
为了偷懒,也为了尽快验证我的推断,写了一个很简单的测试代码如下。
为了偷懒,也为了尽快验证我的推断,写了一个很简单的测试代码如下。
Context.java
package com.bijian.study.dto;
public class Context {
private int seqNo;
public int getSeqNo() {
return seqNo;
}
public void setSeqNo(int seqNo) {
this.seqNo = seqNo;
}
}
HelloService.java
package com.bijian.study.service;
public interface HelloService {
public String processService(String name) throws Exception;
public String processService() throws Exception;
}
Hell