Skip to content

mcallzbl/springlite

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

66 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

一个轻量的springIoc和Aop实现(学习版)

使用时应添加参数: --add-opens java.base/java.lang=ALL-UNNAMED

实现了类似Spring的Ioc容器,支持Bean注册、依赖注入和生命周期管理。使用三级缓存化解了循环依赖的问题。

实现了简易的AOP框架,支持前置通知、后置通知等通知类型,灵活地根据有无接口切换JDK代理和CGLIB代理 ,基于 AspectJ 进行方法匹配,织入前置/返回增强,形成责任链调用。

Bean 生命周期管理: 负责设计 Bean 的创建、初始化、销毁等生命周期管理机制,处理 Bean 定义、依赖注入和对象的实例化过程。 构造器优选装配:参数名推断与类型匹配并用,多构造器场景下依然稳定注入。引入作用域接口,默认实现单例和原型作用域,可拓展。

设计模式: 广泛使用工厂模式、代理模式、单例模式等设计模式

  • 从零设计并实现轻量级 Spring‑lite 框架(IoC+AOP),覆盖 Bean 注册、依赖注入与生命周期管理,提供应用上下文与事件发布;以 JUnit 5 单元测试验证核心路径稳定性。
  • IoC 容器:实现 DefaultListableBeanFactory 与三级缓存(singleton/early/factory),通过单例提前曝光解决循环依赖;支持 singleton/prototype 及自定义 Scope。
  • 自动装配:落地“构造器优先”注入策略,结合参数名发现、类型匹配与多构造器选择算法,保障复杂构造参数场景的确定性与稳定性。
  • AOP 子系统:基于 AspectJ 表达式实现切点匹配与前置/返回通知;按目标类型在 JDK 动态代理与 CGLIB 间自动切换,拦截器链采用责任链模型,确保顺序可控与扩展性。
  • 配置与工具:基于 dom4j 实现 XML Bean 定义解析与命名空间扩展;提供 DefaultConversionService(字符串→布尔/数值等)、属性占位符解析与 Environment 抽象,提升配置一致性与易用性。

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages