导航:首页 > 编程语言 > spring揭秘源代码

spring揭秘源代码

发布时间:2023-07-19 21:32:17

1. 如何查看spring源码

1.准备工作:在官网上下载了Spring源代码之后,导入Eclipse,以方便查询。
2.打开我们使用Spring的项目工程,找到Web.xml这个网站系统配置文件,在其中找到Spring的初始化信息:

<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

由配置信息可知,我们开始的入口就这里ContextLoaderListener这个监听器。
在源代码中我们找到了这个类,它的定义是:
public class ContextLoaderListener extends ContextLoader
implements ServletContextListener {

/**
* Initialize the root web application context.
*/
public void contextInitialized(ServletContextEvent event) {
this.contextLoader = createContextLoader();
if (this.contextLoader == null) {
this.contextLoader = this;
}
this.contextLoader.initWebApplicationContext(event.getServletContext());
}
...
}

该类继续了ContextLoader并实现了监听器,关于Spring的信息载入配置、初始化便是从这里开始了,具体其他阅读另外写文章来深入了解。
二、关于IOC和AOP
关于Spring IOC 网上很多相关的文章可以阅读,那么我们从中了解到的知识点是什么?
1)IOC容器和AOP切面依赖注入是Spring是核心。
IOC容器为开发者管理对象之间的依赖关系提供了便利和基础服务,其中Bean工厂(BeanFactory)和上下文(ApplicationContext)就是IOC的表现形式。BeanFactory是个接口类,只是对容器提供的最基本服务提供了定义,而DefaultListTableBeanFactory、XmlBeanFactory、ApplicationContext等都是具体的实现。
接口:

public interface BeanFactory {
//这里是对工厂Bean的转义定义,因为如果使用bean的名字检索IOC容器得到的对象是工厂Bean生成的对象,
//如果需要得到工厂Bean本身,需要使用转义的名字来向IOC容器检索
String FACTORY_BEAN_PREFIX = "&";
//这里根据bean的名字,在IOC容器中得到bean实例,这个IOC容器就象一个大的抽象工厂,用户可以根据名字得到需要的bean
//在Spring中,Bean和普通的JAVA对象不同在于:
//Bean已经包含了我们在Bean定义信息中的依赖关系的处理,同时Bean是已经被放到IOC容器中进行管理了,有它自己的生命周期
Object getBean(String name) throws BeansException;
//这里根据bean的名字和Class类型来得到bean实例,和上面的方法不同在于它会抛出异常:如果根名字取得的bean实例的Class类型和需要的不同的话。
Object getBean(String name, Class requiredType) throws BeansException;
//这里提供对bean的检索,看看是否在IOC容器有这个名字的bean
boolean containsBean(String name);
//这里根据bean名字得到bean实例,并同时判断这个bean是不是单件,在配置的时候,默认的Bean被配置成单件形式,如果不需要单件形式,需要用户在Bean定义信息中标注出来,这样IOC容器在每次接受到用户的getBean要求的时候,会生成一个新的Bean返回给客户使用 - 这就是Prototype形式
boolean isSingleton(String name) throws NoSuchBeanDefinitionException;
//这里对得到bean实例的Class类型
Class getType(String name) throws NoSuchBeanDefinitionException;
//这里得到bean的别名,如果根据别名检索,那么其原名也会被检索出来
String[] getAliases(String name);
}

实现:
XmlBeanFactory的实现是这样的:
public class XmlBeanFactory extends DefaultListableBeanFactory {
//这里为容器定义了一个默认使用的bean定义读取器,在Spring的使用中,Bean定义信息的读取是容器初始化的一部分,但是在实现上是和容器的注册以及依赖的注入是分开的,这样可以使用灵活的 bean定义读取机制。
private final XmlBeanDefinitionReader reader = new XmlBeanDefinitionReader(this);
//这里需要一个Resource类型的Bean定义信息,实际上的定位过程是由Resource的构建过程来完成的。
public XmlBeanFactory(Resource resource) throws BeansException {
this(resource, null);
}
//在初始化函数中使用读取器来对资源进行读取,得到bean定义信息。这里完成整个IOC容器对Bean定义信息的载入和注册过程
public XmlBeanFactory(Resource resource, BeanFactory parentBeanFactory) throws
BeansException {
super(parentBeanFactory);
this.reader.loadBeanDefinitions(resource);
}

2. 如何利用Eclipse 查看Spring jar 包的源代码

在Eclipse查看开发包jar源码的方法如下:
1.选择项目,右键中单击【】
2.【Java Build Path】-【Libraries】,在下面找到如:org.springframework.core-3.1.0.M1.jar包,展开它,选择【Source attachment】,单击右边的【Edit…】按钮。
3.在打开的窗口中,可选择文件(jar\zip),目录或工作空间中的jar文件,在这里我选择External Folder…,选择如F:\Development Kit\spring-framework-3.1.0.M1-with-docs\spring-framework-3.1.0.M1\projects即可。
4.连续单击【OK】两次回到Eclipse工作平台即可。

我的为什么不行啊
我【Java Build Path】-【Libraries】找到spring.jar,展开,选择【Source attachment】,单击右边的【Edit…】按钮,选择workspace,输入:/autojboa/WebContent/WEB-INF/lib/spring.jar,最后运行到saveOrUpdate还是进不去,我的/autojboa/WebContent/WEB-INF/lib/spring.jar目录下有spring.jar

阅读全文

与spring揭秘源代码相关的资料

热点内容
如何从数控编程小白到大师 浏览:183
更改微信共享实时位置信息 浏览:13
js姓名正则 浏览:843
如何利用串口传输文件夹 浏览:346
jca文件怎么用word打开 浏览:965
U盘文件木马隐藏exe工具 浏览:152
下载优酷app视频播放器安装 浏览:38
两个excel文件不同 浏览:585
如何更新网站内容 浏览:953
什么网站下载广场舞是免费的 浏览:307
西门子编程软件怎么变成中文 浏览:984
居客来wifi密码 浏览:604
文件为何为空linux 浏览:630
美剧鸟app安装包在手机哪里 浏览:985
苹果5s16g升级ios103 浏览:850
word红头文件中怎么加双线 浏览:825
切割机用什么编程 浏览:787
文件修订题目 浏览:572
魅族pro5自带浏览器怎么升级 浏览:342
为什么用数据还是加载慢 浏览:171

友情链接