spring4.2.4的源码在哪

spring4.2.4的源码在哪,第1张

1首先新建一个文件夹,如c:\\myWorkspace 2然后在myWorkspace中再新建一个文件夹,名为你的项目名 3如myProject,然后把你的源代码放到myProject中。 那么现在有文件目录如下 c:\myWorkspace\myProject\src c:\myWorkspace\myProject\bin

Spring源代码的组织结构发表于 天前 Spring 评论数 被围观 views+

首先获得Spring的源代码 可以通过src/svn/spring framework/地址 使用EclipseSVN检出功能或者其他工具获得源代码

Build spring framework是整个Spring源代码的构建目录 里面是项目的构建脚本 如果要自己动手构建Spring 可以进入这个目录使用ANT进行构建

l  ntext是IoC容器的源代码目录

l  springframework aop是AOP实现的源代码目录

l  springframework jdbc是JDBC的源代码部分

l  springframework orm是O/R Mapping对应的源代码实现部分

l  springframework samples petclinic是Spring提供的一个应用示例的源代码 便于我们开发Spring应用时参考

Spring源代码中的每个包(比如ntext)都以一个相对独立的子项目存在于代码库中 之所以说这些包是子项目 是因为每个包都可以作为独立的项目导入到Eclipse中 都有Eclipse的项目配置文件 有针对这些包的代码的测试用例 这些测试用例组织在src/test目录中 另外还有针对自己包的build构建文件 这些构建文件同时也是构成整个Spring项目构建的一部分 这种代码组织结构使得包之间的相互耦合相对较小 非常有利于各个子模块的并行开发 集成与测试

在每个源代码包中 都有着类似的代码结构划分 比如src是源代码目录 其中的main目录用来存放产品代码 test用来存放测试代码 main里面的java目录用来存放java源文件 而resources目录用来存放资源文件 target目录用来存放编译好的classes文件 这个target名字让我想起了在嵌入式软件的开发系统中也常看到这样的目录 在那些系统里 这些目录常用来存放目标代码 往往还可以针对不同的处理器结构和平台(比如X 平台 PPC平台 arm平台等) 在这里 因为Java的跨平台特性 所以只要一个target即可 也许这些名字也是Java起源于嵌入式系统开发的佐证之一吧 这些代码的组织规划很统一 让整个Spring的源代码看起来非常整齐 浏览起来非常方便

lishixinzhi/Article/program/Java/ky/201311/27928

下面用的是425的源码

从这个文件开始看:META-INF/springhandlers

文件里的内容是>

MvcNamespaceHandler源码:

从AnnotationConfigApplicationContext切入分析源码,

AnnotationConfigApplicationContext的类图,其中继承了GenericApplicationContext,也继承了BeanDefinitionRegistry

分析这三个重要的方法

thisscanner = new ClassPathBeanDefinitionScanner(this);

实例化了扫面类,但是不是用这个类去扫面要加载的类,那这个类的作用是什么,是我们手动的扫面,看下面的例子

spring源码中会自动的扫描包下的类,比如标注了@Component @Configuration等注解的类,自动扫描的时候,会重新有从新new了一个ClassPathBeanDefinitionScanner(this);后续的文章会分析,那我们想手动的扫描呢,用的就是这个scanner

主要是读取配置类这里就是MyConfigurationclass,要注意的是只是将配置类加载到beanDefinitionMap中,不会去解析,通过refresh()方法解析的 ,并注入了很多的BeanFacrotyPostProcessor

thisreader = new AnnotatedBeanDefinitionReader(this);

AnnotationConfigUtilsregisterAnnotationConfigProcessors(thisregistry);

最终调用AnnotatedBeanDefinitionReader的有参构造器

registerAnnotationConfigProcessors方法

AnnotationConfigApplicationContext构造函数的register(componentClasses);

-->AnnotatedBeanDefinitionReader#register的thisreaderregister(componentClasses);

-->AnnotatedBeanDefinitionReader#doRegisterBean

就是最重要的refresh();方法,再后续的文章分析

spring是大家都会用的ioc框架,但是要真的了解spring还是需要好好研究一下才行,为此看了一些spring源码,所以开始写spring源码分析的文章,这个是第一篇,先从ioc容器的启动开始。

我们都知道,spring的ioc容器的最基本的接口就是BeanFactory,而ApplicationContext是包含了BeanFactory的所有信息,所以ioc容器在启动的时候就是从AbstractApplicationContext的refresh方法开始的

具体的启动流程就不说了,主要是这里有一个onRefresh方法,我们来看AbstractRefreshableWebApplicationContext这个类,在这个类中覆写了onRefresh方法

这是什么东西?别急,我们来看看themeSource是什么。

还是不太明白?那我们来看看AbstractRefreshableWebApplicationContext的结构

原来ThemeSource是一个接口,而AbstractRefreshableWebApplicationContext则实现了这个接口,在onRefresh把自己传进去了,好吧,这块就先看到这里。

我们直接到XmlWebApplicationContext这个类里,我们发现AbstractRefreshableApplicationContext类有一个方法loadBeanDefinitions,而XmlWebApplicationContext覆写了这个方法,我们来看看XmlWebApplicationContext是怎么实现的

这里我们要介绍ioc容器里的一个接口BeanDefinitionReader,而XmlBeanDefinitionReader是BeanDefinitionReader的一个实现类,负责对xml的配置文件进行读取,并放到ioc容器中。当读取完配置文件后,通过loadBeanDefinitions方法将bean注册到ioc容器中。

至此,ioc容器就启动完成。

XmlWebApplicationContext的分析就到这里了。

以上就是关于spring4.2.4的源码在哪全部的内容,包括:spring4.2.4的源码在哪、Spring源代码的组织结构、怎么找到spring注解解析器的源码等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/web/9515146.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-29
下一篇 2023-04-29

发表评论

登录后才能评论

评论列表(0条)

保存