无处生还
76.43M · 2026-04-23
文章内容收录到个人网站,方便阅读:hardyfish.top/
Spring 的实现原理可以从它的核心机制和运行流程两方面来说。
Spring 的核心是 IoC(控制反转) 和 AOP(面向切面编程) ,它通过容器管理对象的生命周期和依赖关系,并在运行时对类进行动态增强。
new。(1)创建容器对象
new ClassPathXmlApplicationContext() 或 AnnotationConfigApplicationContext()(2)BeanDefinition 注册
BeanDefinition 对象中,放入 BeanDefinitionMap。(3)Bean 实例化
Constructor.newInstance())。(4)依赖注入
setXxx() 或直接设置字段值完成注入。@Autowired,Spring 会执行 依赖查找(byType/byName) 并注入。(5)初始化回调
BeanPostProcessor(如 @PostConstruct、InitializingBean.afterPropertiesSet())。(6)AOP 代理
@Transactional、@Aspect 等),会使用 JDK 动态代理(接口)或 CGLIB 代理(类继承)创建代理对象,放进容器。(7)Bean 就绪
(1)IoC 容器实现
BeanFactory,常用实现是 DefaultListableBeanFactory。ConcurrentHashMap<String, Object>(单例池)缓存单例 Bean。(2)AOP 实现
@Aspect 或 XML 切面配置。ProxyFactory 结合 JdkDynamicProxy / CglibAopProxy 创建代理类。MethodInterceptor 组成(事务、日志等)。(3)事件机制
ApplicationEventPublisher 用来发布事件,ApplicationListener 订阅事件。(4)事务管理
Connection.setAutoCommit(false)),执行后提交或回滚。BeanPostProcessor)、事件器等扩展点。