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请求后台打印
日拱一卒无有尽,功不唐捐终入海