Spring主要是为了解决企业应用开发的复杂性而诞生的。
IOC-轻量级控制反转
AOP-面向切面的容器框架
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用
优势:
1.定位的领域是许多其他流行的framework没有的
2.Spring是全面的和模块化的
3.它的设计从底部帮助编写易于测试的代码
4.Spring是潜在的一站式解决方案
优点:
1.低侵入式设计,代码污染极低
2.Write Once,Run Anywhere
3.DI有效的降低了耦合度
4.AOP提供了通用任务的集中管理
5.ORM和DAO简化了对数据库访问
6.高度开放性,并不强制(可以使用Spring框架的一部分或全部框架)
优点带来的好处:
1.可以有效组织中间层对象
2.使用统一的配置文件
3.促进良好的编程习惯,减少编程代价
4.易于单元测试
5.使EJB编程一种备选
6.为数据存取提供了一致的框架
特点:
1.方便解耦,简化开发
2.AOP编程的支持
3.声明式事务的支持
4.方便程序测试
5.方便集成各种优秀的框架
6.降低J2EE API的使用难度
7.Spring的源码是经典学习范例
核心模块:
1. 核心容器(Spring Core)
2.应用上下文(Spring Context)
3.AOP模块(Spring AOP)
4.JDBC和DAO模块(Spring DAO)
5.对象实体映射(Spring ORM)
6.Web模块(Spring Web)
7.MVC模块(Spring Web MVC)
IOC(Inversion of Control,控制反转)
由spring来负责控制对象的生命周期和对象间的关系:
1.传统开发模式:对象之间互相依赖
2.IOC开发模式:IOC容器安排对象之间的依赖
IOC(别称:依赖注入 Dependency Injection):由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中;指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦
IOC好处:
1.降低组件之间的耦合度
2.提高开发效率和产品质量
3.统一标准,提高模块的复用性
4.模块具有热插拨特性
IOC通俗理解:
IOC控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是在xml文件控制,侧重于原理
DI依赖注入:创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现
AOP:
是OOP的延续,动态角度,专门用于处理系统中分布于各个模块中的交叉关注点的问题
AOP代理是由AOP框架动态生成的一个对象,该对象可作为目标对象使用
1.定义普通业务组件
2.定义切入点
3.定义增强处理
代理对象的方法 = 增强处理 + 被代理对象的方法
AOP关键概念解释:
切面 - Aspect
连接点 - Join Point
通知 - Advice
切入点 - Point Cut
引入 - Introduction
目标对象 - Target Object
AOP代理 - AOP Proxy
织入 - Weaving
核心开发包:
Spring Core
Spring Beans
Spring AOP
Spring Context
提供了各种企业级服务包:
Spring Aspects
Spring Context Support
Spring Expression
Spring Framework Bom
Spring Instrument
Spring Instrument Tomcat
Spring JDBC
Spring JMS
Spring orm
Spring oxm
Spring Struts
Spring test
Spring tx
Spring web
Spring webmvc
Spring webmvc portlet
创建一个基于Spring IOC的小程序的步骤:
1.建立Spring工程
2.编写Java文件
3.编写配置文件
4.运行示例工程
注入方法,分为三种类型:
1.构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入
2.属性注入:通过Setter方法完成调用类所需依赖的注入,更方便灵活
3.接口注入:将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法
Java反射机制:
Java语言允许通过程序化的方式间接对Class的对象实力操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息
类装载器:
寻找类的字节码文件并构造出类在JVM内部表示的对象组件,主要工作由ClassLoader及其子类负责
工作机制:
1.装载:查找和导入Class文件
2.链接:执行校验,准备和解析步骤
3.初始化:对类的静态变量、静态代码块执行初始化工作
重要方法:
1.Class loadClass(String name)
2.Class defineClass(String name, byte[]b, int off, int len)
3.Class findSystemClass(String name)
4.Class findLoadedClass(String name)
5.ClassLoader getParent()
最主要的三个反射类:
1.Constructor - 类的构造函数反射类
2.Method - 类方法的反射类
1.Class getReturnType() - 获取方法返回值类型
2.Class[] getParameterTypes() - 获取方法的入参返回数组
3.Class[] getExceptionTypes() - 获取方法的异常类型数组
4.Annotation[][] getParameterAnnotations() - 获取方法的助理信息
3.Field - 类的成员变量的反射类
反射机制与IOC关系:
当需要更改实现类或参数信息时,只需要修改配置文件即可
IOC的实现原理利用的就是Java的反射机制,通过bean的名称获取对应的对象
Resource接口主要方法:
1.boolean exists() - 判断资源是否存在
2.boolean isOpen() - 判断资源是否打开
3.URL getURL() - 若底层资源可以表示成URL,该方法返回URL对象
4.File getFile() - 若底层资源对应一个文件,该方法返回对应的File对象
5.InputStream getInputStream() - 返回资源对应的输入流
Resource具体实现类:
1.ByteArrayResource - 二进制数组表示的资源
2.ClassPathResource - 类路径下面的资源
3.FileSystemResource - 文件系统资源,资源文件以文件系统路径的方式来表示
4.InputStreamResource - 对应一个InputStream的资源
5.ServletContextResource - 为了访问Web容器上下文中的资源
6.UrlResource - 使用户能够访问任何通过URL表示的资源
资源类型地址前缀:
1.classpath classpath:com/jike/bean.xml
2.File file:/com/jike/bean.xml
3.http:// http://www.jike.com/bean.xml
4.ftp ftp://www.jike.com/bean.xml
5.无前缀 com/jike/bean.xml
Ant风格的匹配符:
1.?:匹配文件名中的一个字符
2.*:匹配文件名中的任意字符
3.**:匹配多层路径
Ant风格的资源路径示例:
1.Classpath:com/t*st.xml
2.File:D:/conf/*.xml
3.Classpath:com/**/test.xml
4.Classpath:org/springframework/**/*.xml
BeanFactory是Spring框架最核心的借口,它提供了高级IOC的配置机制,基础设施,面对Spring本身的
类体系结构:
1.XmlBeanFactory
2.ListableBeanFactory
3.HierarhicalBeanFactory
4.ConfigurableBeanFactory
5.AutowireCapableBeanFactory
6.SingletonBeanFactory
7.BeanDefinitionRegistry
初始化顺序:
1.创建配置文件
2.装载配置文件
3.启动IOC容器
4.获取Bean实例
ApplicationContext的实现类以及类体系结构:
1.ClassPathXmlApplicationContext - 默认从类路径加载配置文件
2.FileSystemXmlApplicContext - 默认从文件系统中加载配置文件
3.ConfigurableApplicationContext - 启动、刷新、关闭应用上下文
扩展接口:
1.ApplicationEventPublisher
2.MessageSource
3.ResourcePatternResolver
4.LifeCycle
根据配置文件路径不同可以选择不同的实现类加载:
1.ClassPathXmlApplicationContext
2.FileSystemXmlApplicContext
3.Bean的实例化问题
Bean生命周期由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制
IOC-轻量级控制反转
AOP-面向切面的容器框架
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用
优势:
1.定位的领域是许多其他流行的framework没有的
2.Spring是全面的和模块化的
3.它的设计从底部帮助编写易于测试的代码
4.Spring是潜在的一站式解决方案
优点:
1.低侵入式设计,代码污染极低
2.Write Once,Run Anywhere
3.DI有效的降低了耦合度
4.AOP提供了通用任务的集中管理
5.ORM和DAO简化了对数据库访问
6.高度开放性,并不强制(可以使用Spring框架的一部分或全部框架)
优点带来的好处:
1.可以有效组织中间层对象
2.使用统一的配置文件
3.促进良好的编程习惯,减少编程代价
4.易于单元测试
5.使EJB编程一种备选
6.为数据存取提供了一致的框架
特点:
1.方便解耦,简化开发
2.AOP编程的支持
3.声明式事务的支持
4.方便程序测试
5.方便集成各种优秀的框架
6.降低J2EE API的使用难度
7.Spring的源码是经典学习范例
核心模块:
1. 核心容器(Spring Core)
2.应用上下文(Spring Context)
3.AOP模块(Spring AOP)
4.JDBC和DAO模块(Spring DAO)
5.对象实体映射(Spring ORM)
6.Web模块(Spring Web)
7.MVC模块(Spring Web MVC)
IOC(Inversion of Control,控制反转)
由spring来负责控制对象的生命周期和对象间的关系:
1.传统开发模式:对象之间互相依赖
2.IOC开发模式:IOC容器安排对象之间的依赖
IOC(别称:依赖注入 Dependency Injection):由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中;指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦
IOC好处:
1.降低组件之间的耦合度
2.提高开发效率和产品质量
3.统一标准,提高模块的复用性
4.模块具有热插拨特性
IOC通俗理解:
IOC控制反转:创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是在xml文件控制,侧重于原理
DI依赖注入:创建对象实例时,为这个对象注入属性值或其他对象实例,侧重于实现
AOP:
是OOP的延续,动态角度,专门用于处理系统中分布于各个模块中的交叉关注点的问题
AOP代理是由AOP框架动态生成的一个对象,该对象可作为目标对象使用
1.定义普通业务组件
2.定义切入点
3.定义增强处理
代理对象的方法 = 增强处理 + 被代理对象的方法
AOP关键概念解释:
切面 - Aspect
连接点 - Join Point
通知 - Advice
切入点 - Point Cut
引入 - Introduction
目标对象 - Target Object
AOP代理 - AOP Proxy
织入 - Weaving
核心开发包:
Spring Core
Spring Beans
Spring AOP
Spring Context
提供了各种企业级服务包:
Spring Aspects
Spring Context Support
Spring Expression
Spring Framework Bom
Spring Instrument
Spring Instrument Tomcat
Spring JDBC
Spring JMS
Spring orm
Spring oxm
Spring Struts
Spring test
Spring tx
Spring web
Spring webmvc
Spring webmvc portlet
创建一个基于Spring IOC的小程序的步骤:
1.建立Spring工程
2.编写Java文件
3.编写配置文件
4.运行示例工程
注入方法,分为三种类型:
1.构造函数注入:通过调用类的构造函数,将接口实现类通过构造函数变量传入
2.属性注入:通过Setter方法完成调用类所需依赖的注入,更方便灵活
3.接口注入:将调用类所有依赖注入的方法抽取到一个接口中,调用类通过实现该接口提供相应的注入方法
Java反射机制:
Java语言允许通过程序化的方式间接对Class的对象实力操作,Class文件由类装载器装载后,在JVM中将形成一份描述Class结构的元信息对象,通过该元信息对象可以获知Class的结构信息
类装载器:
寻找类的字节码文件并构造出类在JVM内部表示的对象组件,主要工作由ClassLoader及其子类负责
工作机制:
1.装载:查找和导入Class文件
2.链接:执行校验,准备和解析步骤
3.初始化:对类的静态变量、静态代码块执行初始化工作
重要方法:
1.Class loadClass(String name)
2.Class defineClass(String name, byte[]b, int off, int len)
3.Class findSystemClass(String name)
4.Class findLoadedClass(String name)
5.ClassLoader getParent()
最主要的三个反射类:
1.Constructor - 类的构造函数反射类
2.Method - 类方法的反射类
1.Class getReturnType() - 获取方法返回值类型
2.Class[] getParameterTypes() - 获取方法的入参返回数组
3.Class[] getExceptionTypes() - 获取方法的异常类型数组
4.Annotation[][] getParameterAnnotations() - 获取方法的助理信息
3.Field - 类的成员变量的反射类
反射机制与IOC关系:
当需要更改实现类或参数信息时,只需要修改配置文件即可
IOC的实现原理利用的就是Java的反射机制,通过bean的名称获取对应的对象
Resource接口主要方法:
1.boolean exists() - 判断资源是否存在
2.boolean isOpen() - 判断资源是否打开
3.URL getURL() - 若底层资源可以表示成URL,该方法返回URL对象
4.File getFile() - 若底层资源对应一个文件,该方法返回对应的File对象
5.InputStream getInputStream() - 返回资源对应的输入流
Resource具体实现类:
1.ByteArrayResource - 二进制数组表示的资源
2.ClassPathResource - 类路径下面的资源
3.FileSystemResource - 文件系统资源,资源文件以文件系统路径的方式来表示
4.InputStreamResource - 对应一个InputStream的资源
5.ServletContextResource - 为了访问Web容器上下文中的资源
6.UrlResource - 使用户能够访问任何通过URL表示的资源
资源类型地址前缀:
1.classpath classpath:com/jike/bean.xml
2.File file:/com/jike/bean.xml
3.http:// http://www.jike.com/bean.xml
4.ftp ftp://www.jike.com/bean.xml
5.无前缀 com/jike/bean.xml
Ant风格的匹配符:
1.?:匹配文件名中的一个字符
2.*:匹配文件名中的任意字符
3.**:匹配多层路径
Ant风格的资源路径示例:
1.Classpath:com/t*st.xml
2.File:D:/conf/*.xml
3.Classpath:com/**/test.xml
4.Classpath:org/springframework/**/*.xml
BeanFactory是Spring框架最核心的借口,它提供了高级IOC的配置机制,基础设施,面对Spring本身的
类体系结构:
1.XmlBeanFactory
2.ListableBeanFactory
3.HierarhicalBeanFactory
4.ConfigurableBeanFactory
5.AutowireCapableBeanFactory
6.SingletonBeanFactory
7.BeanDefinitionRegistry
初始化顺序:
1.创建配置文件
2.装载配置文件
3.启动IOC容器
4.获取Bean实例
ApplicationContext的实现类以及类体系结构:
1.ClassPathXmlApplicationContext - 默认从类路径加载配置文件
2.FileSystemXmlApplicContext - 默认从文件系统中加载配置文件
3.ConfigurableApplicationContext - 启动、刷新、关闭应用上下文
扩展接口:
1.ApplicationEventPublisher
2.MessageSource
3.ResourcePatternResolver
4.LifeCycle
根据配置文件路径不同可以选择不同的实现类加载:
1.ClassPathXmlApplicationContext
2.FileSystemXmlApplicContext
3.Bean的实例化问题
Bean生命周期由多个特定的生命阶段组成,每个生命阶段都允许外界对Bean施加控制