1. 程式人生 > >Spring 如何使用註解注入集合類list、set、map

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:[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]

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

  1. Spring在注入集合類的同時,會將集合泛型類的例項填入集合中,作為集合的初始值。
  2. 對於list、set填入的是注入型別Spring管理的例項,對於map,Spring會將service的名字作為key,物件作為value封裝進入Map。