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。

猜你喜欢

转载自blog.csdn.net/aichuanwendang/article/details/84942185
今日推荐