我需要将地图设置为spring bean。我有一个使用@PostConstruct关键字在init()方法中初始化的映射。
public class CustomerService
{
@Autowired
TestService testService;
static Map<String, String> someMap;
@PostConstruct
public void initIt() throws Exception {
someMap = new HashMap<String, String>();
someMap = // some code by calling testService
}
@PreDestroy
public void cleanUp() throws Exception {}
}
我从applicationContext.xml中将其称为bean。
<bean id="customerService" class="test.com.customer.CustomerService"/>
初始化地图工作正常,我需要将此映射的值分配给bean,以便在应用程序的其他位置访问bean的值。
我找到了将map设置为bean的示例,但所有这些都是在XML配置中完成的。 How to inject a Map in java springs
我怎样才能完成这项任务。任何知识都受到高度赞赏。
答案 0 :(得分:1)
您应该为该地图创建一个getter。你可以在其他地方@autowire你的bean并调用yourbean.getMap() 你会拥有它。
在您的其他课程中,您可以:
@Autowired
CustomerService customerService;
当然,在客户服务中为地图创建一个getter方法。 然后在您的控制器或其他服务中,您应该使用上面的注释自动装配您的bean。然后在你的方法中使用它:
Map m = customerService.getMap();
您可以稍后在应用中使用该方法创建 Flyweight设计模式 (因为您正在创建一个用于存放地图的bean)。 Read a tutorial about Flyweight Design Pattern here