可从整个项目访问HashMap

时间:2015-04-07 10:46:51

标签: java spring

我已定义HashMap

<bean id="userMap" class="pl.test.pojo.UserMap">
    <property name="userMap">
        <map>
        </map>
    </property>
</bean>

我希望能够从项目中的任何类访问此内容 我写信给它:

@Autowired
UserMap userMap;
    Status s = new Status();
    User req = new User();
    s.setStatus(3);
    s.setErrorCode("0");
    s.setErrorDescription("OK");
    s.setCorrelationId(addToQuarantineRequest.getCorrelationId());
    userMap.getUserMap().put(req, s);

没关系,但是从另一个班级我想阅读userMap的内容,首先用@autowired注释声明它NullPointerException我得到Map我怎样才能{{1}}从整个项目可以访问?

1 个答案:

答案 0 :(得分:0)

如果你想在应用程序的所有对象之间共享动态设置的Map,一种简单的方法是将Map包装在bean中(就像你实际使用{{{ 1}} class)并将此bean声明为 singleton 。每次连接您的包装器类时,您将获得相同的实例,因此相同的UserMap并且能够共享值。我会做点什么:

Map

然后,如果您使用XML配置,则将bean声明为 singleton

public interface UserMap {
   void putStatus(User u, Status s);
   Status getStatus(User u);
}

public class UserMapImpl implements UserMap {
   Map<User, Status> statuses = new HashMap<>();

   public void putStatus(User u, Status s) {
      statuses.put(u, s);
   }

   public Status getStatus(User u) {
      statuses.get(u);
   }
}

如果你想用键/值初始化<bean id="userMap" class="pl.test.pojo.UserMapImpl" scope="singleton"/> 你可以在bean中做(你需要吗?)。

无论你使用这个bean,无论是放置值还是读取它,都可以声明

Map