java - 为什么 guice 不注入(inject)之前实例化的 @SessionScoped 对象?

标签 java session-state guice stripes

我有一个@SessionScoped?被注入(inject)到 Stripes 框架拦截器构造函数中的 DAO 似乎是从拦截器中找到的(在后续调用中),但没有被注入(inject)到同一请求(和 session )中的服务中。为什么同一个实例(在拦截器中初始化)没有在服务(位于同一项目的不同包中)中重用?

将 DAO 设为 @Singleton 可以解决问题,但这是 Not Acceptable ,因为 DAO 存储的信息必须在应用程序上的用户 session 期间保持一致,而该应用程序具有共享同一 DAO 实例的多个用户。

最佳答案

如果Interceptor不是 session 范围的对象,那么您需要注入(inject) Provider<YourDaoType>进入Interceptor 。当一个生命周期较长的对象依赖于另一个生命周期较短的对象时,这是常用的模式。

关于java - 为什么 guice 不注入(inject)之前实例化的 @SessionScoped 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4896560/

相关文章:

java - JNI获取ConcurrentHashMap

java - keystore 密码和别名密码不同的风险

asp.net - 无法向 session 状态服务器发出 session 状态请求。错误代码=0x80072749

java - Spring-Security : SecurityContextHolder not populated with anonymous token, 因为它已经包含

jax-rs - Resteasy 和 Google Guice : how to use multiple @ApplicationPath and resource with @Injection?

java - 迁移 Jersey 2.22.1 至 Jersey 2.22.2

java - JDBC 连接错误 mysql 访问被拒绝,用户 <user>@<host>

asp.net-mvc-3 - 丢失我的 session 变量

java - Guice 中一个类的多个提供者

java - 添加Spring AOP后@Autowired返回null