我有2个类,LoginLookup(请求范围)和AppLogin(会话范围)。我想只生成一次令牌,并在调用LoginLookup.authenticate()方法时将值存储在我的AppToken实例中。由于AppToken类是用会话范围定义的,我假设每次注入这个类的实例时我会得到相同的实例吗?我希望我可以简单地使用@Inject AppToken appToken;获取会话作用域实例的行但我得到了不同的实例?我显然没有掌握整个CDI的事情,也许我根本不应该使用CDI?
代码如下所示。
import javax.inject.Named;
import javax.enterprise.context.RequestScoped;
@Named
@RequestScoped
public class LoginLookup {
@Inject
private AppToken appToken;
public String authenticate() {
if (appToken.getToken() == null) {
appToken.setToken(newTokenvalue);
}
}
}
import javax.inject.Named;
import javax.enterprise.context.SessionScoped;
@Named
@SessionScoped
public class AppToken {
private String token;
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
}
}