在 Web 应用程序中使用静态 StringWriter 的正确方法是什么?
What is correct way to use a static StringWriter in a web application?
我在 Web 应用程序的处理程序 class 中有一个静态 StringWriter 变量,由 class 中的多个私有方法使用。每个方法都会将一个 String 附加到此变量,最后 StringWriter 将连接后的 String 写入文件。
但是在测试 Web 应用程序时,我意识到 StringWriter 仍然保存着之前所有测试的值。我使用这个问题 (How do you "empty" a StringWriter in Java?) 的答案作为解决方法,但我觉得这在设计模式和安全性方面是不正确的。
是否正确?有没有更好的方法?
public class BaseHandler {
private static StringWriter sw = new StringWriter();
public static void writeToFile(){
firstMethod();
secondMethod();
finalMethod();
}
private static void firstMethod(){
sw.append("Pandora's");
}
private static void secondMethod(){
sw.append("Box");
}
private static void finalMethod(){
sw.append("!");
//sw writes value to file
...
sw.getBuffer().setLength(0);
}
}
我会问自己,我需要一个保持状态的 BaseHandler 吗?现在您的处理程序在 sw
字段中保存一个状态,但如果您不需要此状态,则无需创建字段。
例如你可以这样做:
public class BaseHandler {
public static void writeToFile(){
StringWriter sw = new StringWriter();
firstMethod(sw);
secondMethod(sw);
finalMethod(sw);
}
private static void firstMethod(StringWriter sw){
sw.append("Pandora's");
}
private static void secondMethod(StringWriter sw){
sw.append("Box");
}
private static void finalMethod(StringWriter sw){
sw.append("!");
//sw writes value to file
...
}
}
退出 writeToFile StringWriter 被标记为垃圾回收。
我在 Web 应用程序的处理程序 class 中有一个静态 StringWriter 变量,由 class 中的多个私有方法使用。每个方法都会将一个 String 附加到此变量,最后 StringWriter 将连接后的 String 写入文件。 但是在测试 Web 应用程序时,我意识到 StringWriter 仍然保存着之前所有测试的值。我使用这个问题 (How do you "empty" a StringWriter in Java?) 的答案作为解决方法,但我觉得这在设计模式和安全性方面是不正确的。
是否正确?有没有更好的方法?
public class BaseHandler {
private static StringWriter sw = new StringWriter();
public static void writeToFile(){
firstMethod();
secondMethod();
finalMethod();
}
private static void firstMethod(){
sw.append("Pandora's");
}
private static void secondMethod(){
sw.append("Box");
}
private static void finalMethod(){
sw.append("!");
//sw writes value to file
...
sw.getBuffer().setLength(0);
}
}
我会问自己,我需要一个保持状态的 BaseHandler 吗?现在您的处理程序在 sw
字段中保存一个状态,但如果您不需要此状态,则无需创建字段。
例如你可以这样做:
public class BaseHandler {
public static void writeToFile(){
StringWriter sw = new StringWriter();
firstMethod(sw);
secondMethod(sw);
finalMethod(sw);
}
private static void firstMethod(StringWriter sw){
sw.append("Pandora's");
}
private static void secondMethod(StringWriter sw){
sw.append("Box");
}
private static void finalMethod(StringWriter sw){
sw.append("!");
//sw writes value to file
...
}
}
退出 writeToFile StringWriter 被标记为垃圾回收。