在Java中是否有一种方法可以在一个类中设置变量的值,并能够从另一个类中访问



假设我有一个RestController,在我的post方法中,我想设置全局值或其他东西的值,这样我就可以在另一个类中访问它,而不必将它传递给方法:

假设我有:

RestController类

public void postMethod() {
int x = 10;
serviceMethod(x);
}
服务类

public void serviceMethod(int x) {
componentMethod(x);
}

助手类

public void componentMethod(int x) {
if(x==10) {
log.info("YES");
}
}

是否有可能以某种方式直接访问x的值,而不是将其传递给每个方法?

使用ThreadLocal,但请注意,ThreadLocal应该只在您确定程序流在同一线程中执行时使用,这就是为什么他们称之为ThreadLocal。

给你的提示是,当你使用ThreadLocal时,永远不要在它上面写一个包装器,因为团队中每个想要使用该变量的开发人员都必须知道它是ThreadLocal

是的,这是可能的。您可以在全局作用域中定义变量,并在另一个类中创建该类的实例。使用这个实例,你可以访问另一个类中的变量。

例如。

class RestController {
int x = 10;
}
class Service {
RestController rs = new RestController();
int x = rs.x;
componentMethod(x);
}

但是如果你的整个操作/程序都在同一个线程中执行,那么考虑使用ThreadLocal。将值存储在ThreadLocal中,您可以在同一个线程中使用它。

最新更新