Spring MVC中的全局变量

时间:2019-06-07 01:35:39

标签: java

我想将HashMap作为全局变量存储在Spring MVC中。我使用ServletContextListner修复此问题。但它不能正常工作。我正在使用Java 8.72和Spring 3

我尝试使用servlet上下文列表器解决此问题。我创建了类,并正确实现了ServletContextListener接口和web.xml中的配置程序。接下来,我创建哈希表并将其设置为servlet上下文作为上下文属性。

在控制器中,我可以使用它,但是哈希图中没有以前放入的数据。我该怎么解决。

//My listener class public static HashMap loginusers=new HashMap<>();

@Override
public void contextInitialized(ServletContextEvent sce) {

    sce.getServletContext().setAttribute("Loginuser", loginusers);
    System.out.print("++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
// This sysout is print on console.

}
}

//------------Use loginusers hashmap in controller------------------

HashMap logcheck=(HashMap)context.getAttribute("Loginuser");

1 个答案:

答案 0 :(得分:2)

任何@Component(@Controller和@RestController)都是单例。从理论上讲,它们充当全局变量。在其中之一(使用@AfterPropertiesSet或@PostConstruct)中创建HashMap将使其随处可用。

另一种方法是在@Configuration类中创建HashMap类型的@Bean(具有特定的@Qualifier)。该bean(当@ Autowire-d和@Qualifier一起使用时)将随处可用。