【发布时间】:2020-08-07 03:12:17
【问题描述】:
我在游戏框架中的代码
public class MyController extends Controller {
@Inject
private final MyService myService;
public Result myRequest(Http.Request request) throws InterruptedException {
logger.info("Controler id {}", System.identityHashCode(this));
myService.assignTemp();
return ok();
}
}
public class MyService {
String temp = "temp";
public void assignTemp() throws InterruptedException {
temp = UUID.randomUUID().toString();
logger.info("I generate {}", temp);
Thread.sleep(2000);
logger.info("I return {}", temp);
}
}
当我同时调用 4 个请求时。这是我的日志
2020-08-07 09:44:43 +0700 [INFO] application-akka.actor.default-dispatcher-15 - Controler id 1342212114
2020-08-07 09:44:43 +0700 [INFO] application-akka.actor.default-dispatcher-15 - I generate 45d596ca-40bc-4bbd-8d2d-494b49142133
2020-08-07 09:44:44 +0700 [INFO] application-akka.actor.default-dispatcher-17 - Controler id 1342212114
2020-08-07 09:44:44 +0700 [INFO] application-akka.actor.default-dispatcher-17 - I generate 8ec9ebf0-1571-4e03-b7b8-1f4dc2fcba67
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-16 - Controler id 1342212114
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-16 - I generate fe47949e-f8f9-44d1-8a40-f808be3b9f5d
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-15 - I return fe47949e-f8f9-44d1-8a40-f808be3b9f5d
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-22 - Controler id 1342212114
2020-08-07 09:44:45 +0700 [INFO] application-akka.actor.default-dispatcher-22 - I generate e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:46 +0700 [INFO] application-akka.actor.default-dispatcher-17 - I return e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:47 +0700 [INFO] application-akka.actor.default-dispatcher-16 - I return e15cb14c-9122-43a0-b024-1615655812cb
2020-08-07 09:44:47 +0700 [INFO] application-akka.actor.default-dispatcher-22 - I return e15cb14c-9122-43a0-b024-1615655812cb
Play 对四个线程使用相同的 MyController 实例。这使得许多 注入组件 变得非线程安全
我正在寻找何时播放框架创建新的控制器实例?的答案。或 Play 对任何请求使用相同的实例
这是Play document关于控制器
谢谢
【问题讨论】:
标签: java dependency-injection playframework controller akka