您的位置:首页 > 编程语言 > Java开发

学习Spring3.X 企业应用开发实战笔记(二 )

2012-09-11 16:59 981 查看
IOC容器概述

IOC控制反转是Spring容器的核心,AOP、声明式事物等功能都是在此基础上开花结果。

IOC分为三种类型:构造函数注入,属性注入和接口注入。 Spring直支持前俩种,因为接口注入和其他注入并无太大区别,另外还增加了一个接口类,使系统庞大,不推荐。

类装载器ClassLoader:

类装载器就是寻找类的字节码文件并构造出类在JVM内部表示的对象组件, 类装载器把一个类装入JVM经过如下步骤:

1、装载:查找和导入Class文件。

2、链接:执行校验、准备和解析步骤,其中解析是可以选择的。 )a校验:检查装入Class文件数据的正确性

)b准备:给类的静态变量分配内存空间

)c解析:将符号引用转换为直接引用

3、初始化:对类的静态变量、静态代码块执行初始化工作。

类装载功能由ClassLoader及其子类负责,ClassLoader是一个重要的JAVA运行使系统组件,符合在运行时装入和查找Class字节码文件。在JVM运行时会产生三个ClassLoader:根装载器、ExtClassLoader和APPClassLoader 。其中根装载器不是ClassLoader的子类,它使用C++编写,根装载器负责装载JRE的核心类库,如JRE目标下的rt.jar,charsets.jar等。ExtClassLoader负责装载JRE扩展目录ext中的JAR类包,APPClassLoader
负责装载ClassPath路径下的类包。

由此图看以看出三个装载器的关系 : 根装载器 - > ExtClassLoader - > AppClassLoader


资源访问利器:

Spring使用Resouce接口来装载各种资源。 可以通过FileSystemResource以文件系统绝对路径的方式进行访问,可以通过ClassPathResource以类路径的方式进行

访问,通过ServletContextResource以相对于WEB应该用根目录的方式进行访问。

Resource r1 = new FileSystemReousrce(filePath);
Resource r2 = new ClassPathResource(filePath);
Resource r3 = new ServletCotnextResource(application,"WEB/INF/classes/1.txt");


ResourceLoader类可以支持带资源类型前缀的表达式,不过不支持Ant风格,ResourcePatternResolver扩展了ResourceLoader接口, 支持Ant风格的资源路径表达式。

classpath*:路径名称 和 classpath:路径名称 区别在于前者可以成功加载路径下所有配置文件,而后者只可能加载第一个找到的配置文件。

ResourcePatternResolver resolver = new PathMatchingResourcePatternResolver();
Resource r[] = resolver.getResource("classpath*:com/**/*.xml");


BeanFactory、ApplicationContext、WebApplicationContext介绍

这三个是Spring框架三个最核心的接口,框架中其他大部分的类都围绕他们展开,为他们提供支持和服务。ApplicationFactory是由BeanFactory派生而来,提供了更多面向实际应用的功能。

ApplicationFactory和BeanFactory最大的区别是BeanFacotry在初始化容器时,并未实例化Bean,知道第一个访问某个Bean时才实力目标,而ApplicationContext在初始化应用上下文的时候就实例化所有单实例的Bean

WebApplicationContext是专门为Web应用主内的,允许从相对于Web根目录的路径中装载配置文件完成初始化工作,需要在Web容器的前提下才能完成启动工作。

Bean的声明周期不但和其实实现的接口相关,还与Bean的作用范围有关。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐