假设我有一个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
中,您可以在同一个线程中使用它。