我有一个控制器:
public class MyController extends Controller {
private final AuthChecker authChecker;
@Inject
public MyController(AuthChecker authChecker) {
this.authChecker = authChecker;
}
public Promise<Result> index() throws BusinessException {
authChecker
.tokenValue(request().username())
.execute()
.go();
// bla bla bla
}
}
我遇到AuthChecker
的问题,因为它保留了一个未在每个请求之间重新初始化的内部状态。此类的初始化在其构造函数中完成,该构造函数仅执行一次,而不是@Singleton
每次需要组件时都会创建新实例。如果一个 组件多次使用,默认情况下,多个实例 将创建组件。如果您只想要一个实例 然后你需要将它标记为单例。
我想要每个请求告诉Guice创建一个新实例。 我该如何解决这个问题?
另外,控制器是单身人士吗?因为它们似乎只在整个应用程序生命周期中创建过一次。
感谢。
答案 0 :(得分:1)
您可以使用Provider,这意味着guice会在您每次访问时创建一个新实例(如果您的模块中没有另外配置):
<div class="letter" id="{@xml:id}">