Spring框架很庞大和复杂,为了更好的理解其实现,尝试去模仿其功能手写一个简易版本,暂时只包括简略的几个功能,为了看情况更新。
1. 包含功能
- @ComponentScan包体扫描
- @Autowire依赖注入
- @Scope单例实现
- BeanPostProcessor后置处理器
- InitializingBean初始化bean接口
- BeanNameAware名字资源设置
- BeanDefinition定义
- SingletonObjects单例池
- BeanDefinitionMap池
- 基于注解配置的ApplicationContext
2.逻辑
public class main {
public static void main(String[] args) {
EndwasApplicationContext context = new EndwasApplicationContext(AppConfig.class);
EndwasService endwasService = (EndwasService) context.getBean("endwasService");
endwasService.execute();
}
}
和普通Spring容器使用一样,需要创建容器并传入配置类,然后去获取bean。
public EndwasApplicationContext(Class<?> configClass) {