将map设置为Spring bean

时间:2017-04-24 18:41:31

标签: java spring spring-mvc dictionary

我需要将地图设置为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

我怎样才能完成这项任务。任何知识都受到高度赞赏。

1 个答案:

答案 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