我已定义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}}从整个项目可以访问?
答案 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