java - 无法在应用程序级别设置对象(HashMap)

标签 java spring spring-mvc applicationcontext

我想在应用程序级别设置一个(登录用户的)Hashmap 对象。但无法对每个请求执行相同的操作,我保存在 Hashmap 对象中的旧用户列表正在刷新并仅返回当前登录的用户。 我尝试过很多例子但没有运气。 下面是我的代码

<bean id="applicationContextProvder" class="com.starter.basic.ApplicationContextProvider"/>

<bean id="testBean" class="com.starter.basic.TestBean"/>


TestBean tb = appContext.getApplicationContext().getBean("testBean", TestBean.class)


    public class ApplicationContextProvider implements ApplicationContextAware
     {

    private static ApplicationContext context;

    public ApplicationContext getApplicationContext() {
        return context;
    }

    @Override
    public void setApplicationContext(ApplicationContext ac)
            throws BeansException {
        context = ac;
    }
  }


public class TestBean implements ServletContextAware {
    private HashMap hashMap = new HashMap<String ,String >();

 }

  public HashMap getUsers(){
           return hashMap;
   }

框架采用Spring MVC 3 + Hibernate 4.0

如果有人无法理解我上面的观点。我想做的是,如果某个用户已经登录并尝试从另一个设备再次登录,则应阻止用户。我应该在用户第二次登录时从 Hashmap 对象获取该用户。我可以从后端标志来做到这一点。但我的要求是使用应用程序上下文。

最佳答案

您应该为您的 bean 使用应用程序范围:

http://docs.spring.io/spring/docs/current/spring-framework-reference/html/beans.html#beans-factory-scopes-application

您应该在每次登录时将用户添加到 HashMap 中,并在每次注销时将其删除。

关于java - 无法在应用程序级别设置对象(HashMap),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740493/

相关文章:

java - Caused by: java.lang.IllegalArgumentException: error at::0 找不到引用的切入点

java - 使用 Jackson 和 Spring MVC 3.1 将 Java 列表转换为由列表对象的属性键入的 JSON 对象

java - java中的ArrayList,只执行一次操作

java - 了解以毫秒为单位的 XMLGregorianCalendar/GregorianCalendar 时间

java - 如何在Webflux功能端点中访问OAuth2AuthorizedClient?

java - 为 Spring MVC 和 Maven WebApplication 创建文件/图像文件夹目录

json - Spring REST Controller中带有RequestBody的XML/JSON POST

java - jaxb 解码器将值读取为 0

java - Camel 路线xpath过滤器

java - Spring 与 hibernate : Duplicate entry for key 'PRIMARY'