在静态方法中使用@Autowired HttpServletRequest请求对象

时间:2018-11-22 05:22:30

标签: java spring

我有一个要求-我们使用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。

1 个答案:

答案 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);
  }
}