【发布时间】:2021-05-09 13:08:36
【问题描述】:
假设我有一个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 中,但只有在你确定整个流程在同一个线程中执行的情况下
-
我需要它,因为我不想一直将变量传递给每个方法。我需要变量的方法在调用的后面。所以当我在控制器中设置它时,我不想继续做 service.a(x) -> component.b(x) -> helper.a(x) -> Helper { a(x) { if(x ) { log.info("YES") } } }
标签: java spring-boot spring-restcontroller