Spring 如何使用註解注入集合類list、set、map
阿新 • • 發佈:2018-12-12
首先通過示例來展示,如何在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:[email protected]
inject list service class:[email protected]
inject map key value:injectServiceImpl
inject map service class:[email protected]
inject map service class:[email protected]
從返回的結果中可以看出:
- Spring在注入集合類的同時,會將集合泛型類的例項填入集合中,作為集合的初始值。
- 對於list、set填入的是注入型別Spring管理的例項,對於map,Spring會將service的名字作為key,物件作為value封裝進入Map。