项目中遇到很奇怪的现在,就是StringBuffer会保留前面处理过的值。我写了个Demo测试了,复现了问题:
@Controller
@RequestMapping("/StringBuffer")
public class StringBufferController {
private StringBuffer one = new StringBuffer("");
private StringBuffer two = new StringBuffer("");
@RequestMapping("test")
public void test(String param){
one.append(param);
two.append(param);
}
}
第一次访问接口:http://localhost:8090/StringBuffer/test?param=第一次
第二次访问接口:http://localhost:8090/StringBuffer/test?param=第二次
发现第二次访问的时候,第一次的param居然还保留着。所以我改成在接口内创建new StringBuffer(""),就不会出现这样的状况了
@Controller
@RequestMapping("/StringBuffer")
public class StringBufferController {
private StringBuffer one;
private StringBuffer two;
@RequestMapping("test")
public void test(String param){
one = new StringBuffer("");
two = new StringBuffer("");
one.append(param);
two.append(param);
}
}
致于是为什么这样,我也想知道