注入接口集合

这种用法是在看别人代码的时候学到的,觉得挺有意思的,记录一下。

1、首先新建一个接口

        public interface PlService { }

2、新建两个这个接口的实现类

        @Service

        publicclassAServiceimplementsPlService{

                publicAService(){

                       System.out.println("----------------------- AService 实例化 ------------------------");

                }

        }

        @Service

        publicclassBServiceimplementsPlService{

                publicBService(){

                       System.out.println("------------------------------- BServive 实例化 ------------------------");

                }

        }

3、在另一个类中注入集合

        @Component

        @Slf4j

        public class PlEurekaServerRunner implements ApplicationRunner {

                @Autowiredprivate List services;

                @Autowiredprivate Map serviceMap;

                @Override

                public void run(ApplicationArguments args) throws Exception {

                        for(PlServiceservice : services) {

                                log.info("++++++++++++++++++++ {}+++++++++++++++++++ ", service.getClass().getName());

                        }

                        for(Map.Entryentry : serviceMap.entrySet()) {

                                log.info("======================= {} : {} ====================", entry.getKey(), entry.getValue());

                        }

                 }

         }

4、注入的结果

        如果是List的话,会注入该接口的所有实现类;如果是Map的话,key为类名,value为实现类。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容