【发布时间】:2016-11-28 19:06:39
【问题描述】:
我正在尝试构建(或扩充)一个使用 Spring bean 并使用注释初始化的 web 应用程序。我有一个需要初始化的 bean,但该 bean 需要一个 HttpServletRequest 才能正确初始化(它是一个用户身份 bean)。
我浏览了文档,看到了我需要的部分,但这些部分似乎并没有组合成一个完整的解决方案。
伪例子:
@Configuration
public class MyConfig {
@Bean
public UserBean userBean() {
// initialize with HttpRequest somehow?
}
}
@Controller
public class MyController {
@Resource
UserBean userBean;
@RequestMapping(value="/userId", method=RequestMethod.GET)
public String getUserInfo() {
// do stuff with the initialized user bean here
}
}
注意有多个控制器类,所以我不确定可能会先遇到哪个。
我看到了两件可以做的事情:
- 在
MyConfig类中以惰性方式初始化bean。但我不确定如何访问HttpServletRequest对象。 - 在
getUserInfo()方法中将bean 注入到会话中。但是类中的每个方法可能都需要相同的初始化逻辑,我不确定如何将初始化的 UserBean 注入到会话中,以便其他控制器可以访问相同的 UserBean。
任何帮助/建议/等。将不胜感激
【问题讨论】:
-
请记住,如果解决方案是骇人听闻的,则强烈表明它是错误的。
HttpServletRequest是一个请求对象是有原因的,您是否考虑过将其作为参数传递给UserBean的方法? -
UserBean 对象实际上是使用 HttpServletRequest 对象初始化的,例如UserBean 用户 = UserBean.create(request);
标签: java spring spring-mvc session