Spring 的核心是一点,Bean管理。在这之上,分为两大块,依赖注入IoC和面向切面AOP。正是因为Bean由Spring管理所以它才能自己去注入实现IoC,也可以对每一个Bean进行动态代理从而实现AOP。
实现过程大致包含以下内容:
1. ServletDispatcher拦截,在web.xml中配置
2. ServletDispatcher扫描包从而获取所有类。
3. 对每一个类进行识别,有注解@Component的是需要管理的Bean。
4. 有注解@RestController和@RequestMapping的是对前端请求的处理,符合RESTFul风格。
5. 将3和4中的bean均注册到同一管理类中。并对这些类重新遍历进行自动注入,每一个有@Autowired注解的Field都是可以自动注入的。被注入的对象需要有无参构造函数(有参的以后实现)。
6. 4中的@RequestMapping注册为一个URI对应实体类的映射关系。
7. 用户访问时,解析URI并获取对应的Controller,调用并返回。
8. 返回值使用json格式。
实现逻辑图:
源码见:https://code.csdn.net/bomiaomiao/learn-html-css-js/tree/spring-ioc-v1
源码Tag: spring-ioc-v1