# mini-spring **Repository Path**: sunkq/mini-spring ## Basic Information - **Project Name**: mini-spring - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2022-01-01 - **Last Updated**: 2022-01-01 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 关于 **mini-spring**是简化版的spring框架,能帮助你快速熟悉spring源码和掌握spring的核心原理。抽取了spring的核心逻辑,代码极度简化,保留spring的核心功能,如IoC和AOP、资源加载器、事件监听器、类型转换、容器扩展点、bean生命周期和作用域、应用上下文等核心功能。 ## 功能 #### 基础篇 * [IoC](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#基础篇IoC) * [实现一个简单的容器](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#最简单的bean容器) * [BeanDefinition和BeanDefinitionRegistry](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#BeanDefinition和BeanDefinitionRegistry) * [Bean实例化策略InstantiationStrategy](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#Bean实例化策略InstantiationStrategy) * [为bean填充属性](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#为bean填充属性) * [为bean注入bean](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#为bean注入bean) * [资源和资源加载器](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#资源和资源加载器) * [在xml文件中定义bean](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#在xml文件中定义bean) * [容器扩展机制BeanFactoryPostProcess和BeanPostProcessor](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#BeanFactoryPostProcess和BeanPostProcessor) * [应用上下文ApplicationContext](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#应用上下文ApplicationContext) * [bean的初始化和销毁方法](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#bean的初始化和销毁方法) * [Aware接口](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#Aware接口) * [bean作用域,增加prototype的支持](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#bean作用域增加prototype的支持) * [FactoryBean](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#FactoryBean) * [容器事件和事件监听器](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#容器事件和事件监听器) * [AOP](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#基础篇AOP) * [切点表达式](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#切点表达式) * [基于JDK的动态代理](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#基于JDK的动态代理) * [基于CGLIB的动态代理](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#基于CGLIB的动态代理) * [AOP代理工厂ProxyFactory](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#AOP代理工厂) * [几种常用的Advice: BeforeAdvice/AfterAdvice/AfterReturningAdvice/ThrowsAdvice](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#几种常用的AdviceBeforeAdviceAfterAdviceAfterReturningAdviceThrowsAdvice) * [PointcutAdvisor:Pointcut和Advice的组合](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#pointcutadvisorpointcut和advice的组合) * [动态代理融入bean生命周期](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#动态代理融入bean生命周期) #### 扩展篇 * [PropertyPlaceholderConfigurer](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#propertyplaceholderconfigurer) * [包扫描](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#包扫描) * [@Value注解](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#value注解) * [基于注解@Autowired的依赖注入](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#autowired注解) * [类型转换(一)](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#类型转换一) * [类型转换(二)](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#类型转换二) #### 高级篇 * [解决循环依赖问题(一):没有代理对象](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#解决循环依赖问题一没有代理对象) * [解决循环依赖问题(二):有代理对象](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#解决循环依赖问题二有代理对象) #### Bug fix * [没有为代理bean设置属性(discovered and fixed by kerwin89)](https://gitee.com/sunkq/mini-spring/blob/main/changelog.md#bug-fix没有为代理bean设置属性discovered-and-fixed-by-kerwin89) ## 参考 - [《Spring源码深度解析》](https://book.douban.com/subject/25866350/) - [《精通Spring 4.x》](https://book.douban.com/subject/26952826/) - [tiny-spring](https://github.com/code4craft/tiny-spring)