我有一个要求-我们使用HttpServletRequest请求对象在此对象中设置UserSession详细信息。
需要根据需要在Spring应用程序中的各个位置获取UserSession,然后通过自动连线HttpServletRequest对象来访问此内容。我在多个位置使用过,它的工作就像一种魅力。
但是问题是,当我尝试在静态对象中使用它时,此请求对象会引发编译错误“非静态变量……无法从静态上下文中引用”。
因此,当我尝试将HttpServletRequest设置为静态时,结果为null。我不确定为什么会发生这种情况,并需要在静态方法中使用合适的解决方案。
POJO类
public class POJOClass{
@Autowired
private HttpServletRequest request;
public static String getData(){
UserObject uObj = UtilService.getUser(request);
//Throws Compilation error for request object.
}
*此处 UtilService 是定义的类,将从该类中获取UserSession。
答案 0 :(得分:1)
您应该在Spring中管理您的实用工具类,按照How to Autowire bean in a static class的方式添加静态初始化器,该初始化器将使用Configuration
类进行添加:
@Component public class StaticContextInitializer { @Autowired private MyConfig myConfig; @Autowired private ApplicationContext context; @PostConstruct public void init() { StaticUtils.setMyConfig(myConfig); } }