实例介绍
mini-spring是简化版的spring框架,能帮助你快速熟悉spring源码和掌握spring的核心原理。抽取了spring的核心逻辑,代码极度简化,保留spring的核心功能,如IoC和AOP、资源加载器、事件监听器、类型转换、容器扩展点、bean生命周期和作用域。mini-spring是简化版的spring框架,能帮助你快速熟悉spring源码和掌握spring的核心原理。抽取了spring的核心逻辑,代码极度简化,保留spring的核心功能,如IoC和AOP、资源加载器、事件监听器、类型转换、容器扩展点、bean生命周期和作用域。
【实例截图】
【核心代码】
文件清单
└── mini-spring-9a0d36c4ef9c0422bb417000839b0f9aaa3abcc6
├── assets
│ ├── application-context-life-cycle.drawio
│ ├── application-context-life-cycle.png
│ ├── auto-proxy.drawio
│ ├── auto-proxy.png
│ ├── aware-interface.drawio
│ ├── aware-interface.png
│ ├── bean-definition-and-bean-definition-registry.png
│ ├── chainProceed.png
│ ├── init-and-destroy-method.drawio
│ ├── init-and-destroy-method.png
│ ├── instantiation-strategy.png
│ ├── populate-proxy-bean-with-property-values.drawio
│ ├── populate-proxy-bean-with-property-values.png
│ ├── prototype-bean.drawio
│ ├── prototype-bean.png
│ ├── resource.png
│ ├── spring-framework.png
│ └── xml-file-define-bean.png
├── changelog.md
├── LICENSE
├── pom.xml
├── README_en.md
├── README.md
└── src
├── main
│ └── java
│ └── org
│ └── springframework
│ ├── aop
│ │ ├── AdvisedSupport.java
│ │ ├── Advisor.java
│ │ ├── AfterAdvice.java
│ │ ├── AfterReturningAdvice.java
│ │ ├── aspectj
│ │ │ ├── AspectJExpressionPointcutAdvisor.java
│ │ │ └── AspectJExpressionPointcut.java
│ │ ├── BeforeAdvice.java
│ │ ├── ClassFilter.java
│ │ ├── framework
│ │ │ ├── adapter
│ │ │ │ ├── AfterReturningAdviceInterceptor.java
│ │ │ │ └── MethodBeforeAdviceInterceptor.java
│ │ │ ├── AdvisorChainFactory.java
│ │ │ ├── AopProxy.java
│ │ │ ├── autoproxy
│ │ │ │ └── DefaultAdvisorAutoProxyCreator.java
│ │ │ ├── CglibAopProxy.java
│ │ │ ├── DefaultAdvisorChainFactory.java
│ │ │ ├── JdkDynamicAopProxy.java
│ │ │ ├── ProxyFactory.java
│ │ │ └── ReflectiveMethodInvocation.java
│ │ ├── MethodBeforeAdvice.java
│ │ ├── MethodMatcher.java
│ │ ├── PointcutAdvisor.java
│ │ ├── Pointcut.java
│ │ └── TargetSource.java
│ ├── beans
│ │ ├── BeansException.java
│ │ ├── factory
│ │ │ ├── annotation
│ │ │ │ ├── AutowiredAnnotationBeanPostProcessor.java
│ │ │ │ ├── Autowired.java
│ │ │ │ ├── Qualifier.java
│ │ │ │ └── Value.java
│ │ │ ├── Aware.java
│ │ │ ├── BeanFactoryAware.java
│ │ │ ├── BeanFactory.java
│ │ │ ├── config
│ │ │ │ ├── AutowireCapableBeanFactory.java
│ │ │ │ ├── BeanDefinition.java
│ │ │ │ ├── BeanFactoryPostProcessor.java
│ │ │ │ ├── BeanPostProcessor.java
│ │ │ │ ├── BeanReference.java
│ │ │ │ ├── ConfigurableBeanFactory.java
│ │ │ │ ├── InstantiationAwareBeanPostProcessor.java
│ │ │ │ └── SingletonBeanRegistry.java
│ │ │ ├── ConfigurableListableBeanFactory.java
│ │ │ ├── DisposableBean.java
│ │ │ ├── FactoryBean.java
│ │ │ ├── HierarchicalBeanFactory.java
│ │ │ ├── InitializingBean.java
│ │ │ ├── ListableBeanFactory.java
│ │ │ ├── ObjectFactory.java
│ │ │ ├── PropertyPlaceholderConfigurer.java
│ │ │ ├── support
│ │ │ │ ├── AbstractAutowireCapableBeanFactory.java
│ │ │ │ ├── AbstractBeanDefinitionReader.java
│ │ │ │ ├── AbstractBeanFactory.java
│ │ │ │ ├── BeanDefinitionReader.java
│ │ │ │ ├── BeanDefinitionRegistry.java
│ │ │ │ ├── CglibSubclassingInstantiationStrategy.java
│ │ │ │ ├── DefaultListableBeanFactory.java
│ │ │ │ ├── DefaultSingletonBeanRegistry.java
│ │ │ │ ├── DisposableBeanAdapter.java
│ │ │ │ ├── InstantiationStrategy.java
│ │ │ │ └── SimpleInstantiationStrategy.java
│ │ │ └── xml
│ │ │ └── XmlBeanDefinitionReader.java
│ │ ├── PropertyValue.java
│ │ └── PropertyValues.java
│ ├── context
│ │ ├── annotation
│ │ │ ├── ClassPathBeanDefinitionScanner.java
│ │ │ ├── ClassPathScanningCandidateComponentProvider.java
│ │ │ └── Scope.java
│ │ ├── ApplicationContextAware.java
│ │ ├── ApplicationContext.java
│ │ ├── ApplicationEvent.java
│ │ ├── ApplicationEventPublisher.java
│ │ ├── ApplicationListener.java
│ │ ├── ConfigurableApplicationContext.java
│ │ ├── event
│ │ │ ├── AbstractApplicationEventMulticaster.java
│ │ │ ├── ApplicationContextEvent.java
│ │ │ ├── ApplicationEventMulticaster.java
│ │ │ ├── ContextClosedEvent.java
│ │ │ ├── ContextRefreshedEvent.java
│ │ │ └── SimpleApplicationEventMulticaster.java
│ │ └── support
│ │ ├── AbstractApplicationContext.java
│ │ ├── AbstractRefreshableApplicationContext.java
│ │ ├── AbstractXmlApplicationContext.java
│ │ ├── ApplicationContextAwareProcessor.java
│ │ ├── ClassPathXmlApplicationContext.java
│ │ └── ConversionServiceFactoryBean.java
│ ├── core
│ │ ├── convert
│ │ │ ├── ConversionService.java
│ │ │ ├── converter
│ │ │ │ ├── ConverterFactory.java
│ │ │ │ ├── Converter.java
│ │ │ │ ├── ConverterRegistry.java
│ │ │ │ └── GenericConverter.java
│ │ │ └── support
│ │ │ ├── DefaultConversionService.java
│ │ │ ├── GenericConversionService.java
│ │ │ └── StringToNumberConverterFactory.java
│ │ └── io
│ │ ├── ClassPathResource.java
│ │ ├── DefaultResourceLoader.java
│ │ ├── FileSystemResource.java
│ │ ├── Resource.java
│ │ ├── ResourceLoader.java
│ │ └── UrlResource.java
│ ├── stereotype
│ │ └── Component.java
│ └── util
│ └── StringValueResolver.java
└── test
├── java
│ └── org
│ └── springframework
│ └── test
│ ├── aop
│ │ ├── AutoProxyTest.java
│ │ ├── DynamicProxyTest.java
│ │ ├── PointcutExpressionTest.java
│ │ └── ProxyFactoryTest.java
│ ├── bean
│ │ ├── A.java
│ │ ├── B.java
│ │ ├── Car.java
│ │ └── Person.java
│ ├── common
│ │ ├── ABeforeAdvice.java
│ │ ├── CarFactoryBean.java
│ │ ├── ConvertersFactoryBean.java
│ │ ├── CustomBeanFactoryPostProcessor.java
│ │ ├── CustomerBeanPostProcessor.java
│ │ ├── event
│ │ │ ├── ContextClosedEventListener.java
│ │ │ ├── ContextRefreshedEventListener.java
│ │ │ ├── CustomEvent.java
│ │ │ └── CustomEventListener.java
│ │ ├── StringToBooleanConverter.java
│ │ ├── StringToIntegerConverter.java
│ │ ├── StringToLocalDateConverter.java
│ │ ├── WorldServiceAfterReturnAdvice.java
│ │ ├── WorldServiceBeforeAdvice.java
│ │ └── WorldServiceInterceptor.java
│ ├── expanding
│ │ └── PropertyPlaceholderConfigurerTest.java
│ ├── ioc
│ │ ├── ApplicationContextTest.java
│ │ ├── AutowiredAnnotationTest.java
│ │ ├── AwareInterfaceTest.java
│ │ ├── BeanDefinitionAndBeanDefinitionRegistryTest.java
│ │ ├── BeanFactoryPostProcessorAndBeanPostProcessorTest.java
│ │ ├── CircularReferenceWithoutProxyBeanTest.java
│ │ ├── CircularReferenceWithProxyBeanTest.java
│ │ ├── EventAndEventListenerTest.java
│ │ ├── FactoryBeanTest.java
│ │ ├── HelloService.java
│ │ ├── InitAndDestoryMethodTest.java
│ │ ├── LazyInitTest.java
│ │ ├── PackageScanTest.java
│ │ ├── PopulateBeanWithPropertyValuesTest.java
│ │ ├── PrototypeBeanTest.java
│ │ ├── ResourceAndResourceLoaderTest.java
│ │ ├── TypeConversionFirstPartTest.java
│ │ ├── TypeConversionSecondPartTest.java
│ │ ├── ValueAnnotationTest.java
│ │ └── XmlFileDefineBeanTest.java
│ └── service
│ ├── HelloService.java
│ ├── WorldServiceImpl.java
│ └── WorldService.java
└── resources
├── auto-proxy.xml
├── autowired-annotation.xml
├── car.properties
├── circular-reference-without-proxy-bean.xml
├── circular-reference-with-proxy-bean.xml
├── event-and-event-listener.xml
├── factory-bean.xml
├── hello.txt
├── init-and-destroy-method.xml
├── lazy-test.xml
├── package-scan.xml
├── populate-proxy-bean-with-property-values.xml
├── property-placeholder-configurer.xml
├── prototype-bean.xml
├── spring.xml
├── type-conversion-second-part.xml
└── value-annotation.xml
42 directories, 185 files
标签:
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论