java - Java应用中的半静态字段

标签 java

我编写了一个 Web 服务应用程序,它在主类中为每个请求生成随机值(用于日志记录)。

我无法将其设置为静态字段,因为下一个请求将覆盖它。

我也无法将它传递给我在主类中使用的每个类(作为参数或使用 setter)。

是否可以创建一些半静态字段 - 对一个请求可见,但对访问 Web 服务的所有其他请求不可见?

最佳答案

您可以放心地假设,在 Java EE 模型中,每个请求都由单个线程提供服务,并且并发请求不会发生争用。

话虽如此,您可以使用 ThreadLocal 来使用 Singleton,让 Servlet 填充值并让底层类访问 sigleton,而无需考虑线程或 HTTP 请求上下文:

public class RandomValueHolder {

private static ThreadLocal<Long> randomValue;

public static Long getRandomValue() {
    return randomValue.get();
}

public static void setRandomValue(Long value) {
    randomValue = new ThreadLocal<Long>();
    randomValue.set(value);

}
}

关于java - Java应用中的半静态字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9189304/

相关文章:

java - 迭代链表的差异

java - xcode 和 java 代码

java - 多线程 OptimisticLockException

java - 编写一个 Java 程序,询问用户是否喜欢 Java 编程

Java:如何以更优雅的方式为 preparedStatement 插入多个值?

java - 业务逻辑数据无法使用 Spring Batch(和 Spring-Admin)持久保存

java - 如何让 Maven Surefire 运行所有类和测试?

java - iText PDF 颜色在 Acrobat 中不一致

java - Netbeans 6.7.1 mainPanel 调整大小问题

JavaFX 事件调度线程与 JavaFX 应用程序线程?