spring项目在启动时,spring框架会根据名称自动搜索实现类. 这在日常开发中还是很有用的。

下面举两个例子。

 

1. 先写一个接口(或者抽象类)

public interface IPersonService {
     void say();
}

 

2. 弄两个实现类,并注册到Ioc中

@Component
public class ManService implements IPersonService {
    @Override
    public void say() {
        System.out.println("我是男人。。。。");
    }
}
@Component
public class WomanService implements IPersonService {
    @Override
    public void say() {
        System.out.println("我是女人。。。。");
    }
}

 

3. 再写一个测试的Controller

@RestController
public class PersonController {
    @Autowired
    private Map<String, IPersonService> personServices;

    @Autowired
    private List<IPersonService> list;

    @GetMapping("/getPersonServices")
    public Object getPersonServices(String key) {
        IPersonService manService = personServices.get(key);
        manService.say();
        return manService.getClass();
    }

    @GetMapping("/getList")
    public void getList() {
    list.forEach(System.out::println);
 } }

 

4. 启动项目跑一把

 

 

 

 

 

getList请求后台打印

 

 

 

 

 

 

 

posted on 2019-11-05 21:51  显示账号  阅读(447)  评论(0编辑  收藏  举报