学习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应该用根目录的方式进行访问。
ResourceLoader类可以支持带资源类型前缀的表达式,不过不支持Ant风格,ResourcePatternResolver扩展了ResourceLoader接口, 支持Ant风格的资源路径表达式。
classpath*:路径名称 和 classpath:路径名称 区别在于前者可以成功加载路径下所有配置文件,而后者只可能加载第一个找到的配置文件。
BeanFactory、ApplicationContext、WebApplicationContext介绍
这三个是Spring框架三个最核心的接口,框架中其他大部分的类都围绕他们展开,为他们提供支持和服务。ApplicationFactory是由BeanFactory派生而来,提供了更多面向实际应用的功能。
ApplicationFactory和BeanFactory最大的区别是BeanFacotry在初始化容器时,并未实例化Bean,知道第一个访问某个Bean时才实力目标,而ApplicationContext在初始化应用上下文的时候就实例化所有单实例的Bean
WebApplicationContext是专门为Web应用主内的,允许从相对于Web根目录的路径中装载配置文件完成初始化工作,需要在Web容器的前提下才能完成启动工作。
Bean的声明周期不但和其实实现的接口相关,还与Bean的作用范围有关。
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的作用范围有关。
相关文章推荐
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 ApplicationContext和BeanFactory区别
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 ApplicationContext和BeanFactory区别
- 学习Spring3.X 企业应用开发实战笔记(一)
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.2 相关Java基础知识 类装载器 反射机制
- 《Spring 3.x 企业应用开发实战》学习笔记 第四章
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- 《Spring 3.x 企业应用开发实战》学习笔记 第四章
- 《Spring 3.x 企业应用开发实战》学习笔记 第三章 IoC容器概述 3.5 Bean的生命周期
- 学习《spring 3.x企业应用开发实战》之Spring容器高级主题
- Spring boot入门实例 简易登录(精通Spring+4.x++企业应用开发实战 学习笔记二)
- Spring 入门实例 简易登录系统(精通Spring+4.x++企业应用开发实战 学习笔记一)
- Spring AOP基础(Spring 3.x企业应用开发实战第六章)学习总结
- 学习《spring 3.x企业应用开发实战》之Spring AOP 基础
- 学习《spring 3.x企业应用开发实战》之Spring的事务管理
- 学习《spring 3.x企业应用开发实战》之使用OXM进行对象XML映射
- 学习《spring 3.x企业应用开发实战》之SpringMVC
- 《精通Spring 4.x 企业应用开发实战》学习笔记
- 学习《spring 3.x企业应用开发实战》之Spring的事务管理难点剖析
- 学习《spring 3.x企业应用开发实战》之Spring对DAO的支持