Spring 如何使用註解注入集合類list、set、map

首先通過示例來展示,如何在Spring中使用註解注入集合類(list、map、set等)

定義接口InjectService,繼承InitializingBean接口,便於打印Spring注入的實例對象

public interface InjectService extends InitializingBean{
    public void inject();
}

使用InjectServiceImpl實現InjectService接口

@Service
public class InjectServiceImpl implements InjectService {
​
    @Override
    public void afterPropertiesSet() throws Exception {
        System.out.println("begin class:" + this);
    }
​
    @Override
    public void inject() {
        System.out.println("this is inject service");
    }
​
}

在InjectController中注入list、map和set,類型爲InjectService。分別打印list、map、set中存儲的對象

@Controller
public class InjectController {
​
    @Autowired
    private List<InjectService> list;
    @Autowired
    private Map<String, InjectService> map;
    @Autowired
    private Set<InjectService> set;
​
    @RequestMapping("inject.html")
    public void injectUrl() {
        for (InjectService service : list) {
            System.out.println("inject list service class:" + service);
        }
        for (String key : map.keySet()) {
            System.out.println("inject map service class:" + map.get(key));
        }
        for (InjectService service : set) {
            System.out.println("inject map service class:" + service);
        }
    }
}

訪問接口inject.html,輸出結果如下:

begin class:com.spring.test.service.impl.InjectServiceImpl@10ee04df
inject list service class:com.spring.test.service.impl.InjectServiceImpl@10ee04df
inject map key value:injectServiceImpl
inject map service class:com.spring.test.service.impl.InjectServiceImpl@10ee04df
inject map service class:com.spring.test.service.impl.InjectServiceImpl@10ee04df

從返回的結果中可以看出:

  1. Spring在注入集合類的同時,會將集合泛型類的實例填入集合中,作爲集合的初始值。
  2. 對於list、set填入的是注入類型Spring管理的實例,對於map,Spring會將service的名字作爲key,對象作爲value封裝進入Map。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章