2015-04-07 42 views
1

我已经定义HashMapHashMap的

<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从整个项目中获得?

+0

getter和setter方法? –

+0

@JordiCastilla我不太了解。类'UserMap'确实有getter和setter。我不知道这与可访问性有什么共同点 – Mithrand1r

+0

如果您没有正确设置Spring配置以使用'Autowired',NPE就会发生。你有没有在你的Spring xml配置中指定''位? –

回答

0

如果你想你的应用程序一个Map这是动态设置的所有对象之间共享,一个简单的方法就是包裹Map在豆(像你实际做的UserMap类),并宣布这个bean作为单身人士。每次你的包装类线,你应该得到相同的实例,因此Map共享的值。如果您使用XML配置,您声明bean作为

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"/> 

如果你想初始化Map与键/值你,我会做沿东西可以在bean中做到(你需要那个吗?)。

而且无论你使用这个bean,或者把值或阅读的人,你可以声明

public class Foo { 
    @Autowired 
    UserMap userMap; 

    public void someMethod() { 
     // put some data into userMap 
    } 
} 

public class Bar { 
    @Autowired 
    UserMap userMap; 

    public void someOtherMethod() { 
     // read data from userMap 
    } 
}