目录
Spring控制反转
什么是spring框架?
- spring是一个开放源代码的设计层面框架,它解决的是业务逻辑层和其他各层的松耦合问题,是一个分层的javaEE一站式轻量级开源框架
spring的作用
- 方便解耦,简化开发,AOP编程支持,声明式事务支持,集成Junit更加方便的进行分层测试,方便集成各种优秀框架
- 简单来讲------集成junit框架,支持AOP编程、声明式事务,
Spring特点
- Aop变成支持
- 方便解耦,简化开发
- 方便程序测试
- 方便和其他框架进行整合
- 方便进行事物操作
- 降低API开发难度
Spring有两个核心部分:IOC和Aop
(1)IOC:控制反转,把创建对象的过程交给Spring进行管理
(2)Aop:面向切面,不修改源代码进行功能增强
spring由哪些模块组成
核心容器(SpringCore)
- 核心容器提供Spring框架的基本功能。spring以bean的方式组织和管理Java应用的各个组件及其关系,spring使用BeanFactory来产生和管理Bean,是工厂模式的实现,BeanFactory使用控制反转(IoC)模式将应用的配置和依赖性规范与实际的应用程序代码分开
应用上下文(Spring Context)
- Spring上下文是一个配置文件,向spring提供上下文信息,spring上下文包括企业服务
Spring面向切面编程(Spring AOP)
- AOP(Aspect Oriented Programming)
- 通过配置管理特性,SpringAOP模块直接将面向方法的编程功能集成在了Spring框架中,Spring管理的任何对象都支持AOP,SpringAOP模块基于Spring的应用程序中的对象提供了事务管理服务,通过使用SpringAOP,不用依赖EJB组件,就可以将声明性事务管理集成在应用程序中
JDBC和DAO模块(Spring DAO)
- Dao(Data Access Object)
- JDBC、DAO的抽象层,提供了有意义的异常层次结构实现,可用该结构来管理异常处理,和不同数据库提供商抛出的错误信息,异常层次结构简化了错误处理,并且极大的降低了需要编写的代码数量,比如打开和关闭链接。
对象实体映射(Spring ORM)
- ORM(Object Relational Mapping)
- Spring插入了若干个ORM框架,提供了ORM对象的关系工具,其中包括Hibernate,JDO和IBatisSQL Map等,所有这些都遵从Spring的通用事务和DAO异常层次结构
Web模块(Spring Web)
- web上下文模块建立应用程序上下文模块之上,基于web的应用程序提供了上下文,所以spring框架支持与Struts集成,web模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作
MVC模块(SpringWebMVC)
- MVC(Model View Controller
- MVC框架是一个全功能的构建Web应用程序的MVC实现,通过策略接口,MVC框架编程高度可配置的,MVC容纳了大量视图技术,其中包括JSP,POI等,模型由JavaBean来构成,存放于m当中,而视图是一个接口,负责实现模型,控制器表示逻辑代码,由c的事情。spring框架的功能可以用在任何J2EE服务器当中,大多数功能也适用于不受管理的环境,spring的核心要点就是支持不绑定到特定J2EE服务的可重用业务和数据的访问对象,毫无疑问这样的对象可以在不同的J2EE环境,独立应用程序和测试环境之间重用
Spring控制反转(IOC)
什么是IOC?
- 控制反转(Inversion of Control,缩写为IoC),是面向对象编程中的一种设计原则,可以用来减低计算机代码之间的耦合度。其中最常见的方式叫做依赖注入(Dependency Injection,简称DI),还有一种方式叫“依赖查找”(Dependency Lookup)。通过控制反转,对象在被创建的时候,由一个调控系统内所有对象的外界实体将其所依赖的对象的引用传递给它。也可以说,依赖被注入到对象中。
- IOC负责创建对象,管理对象,装配对象,配置对象,并且管理这些对象的整个生命周期。
- 简单来讲-----控制反转,把创建对象的权利交给spring
IOC具体做法:
- 将bean之间的依赖关系尽可能的转换为关联关系
- 将对具体类的关联尽可能的转换为Java Interface的关联,而不是与具体的服务对象关联
- Bean实例具体关联Java Interface的哪个实现类的实例
- 由IOC组件根据配置信息,实例化具体Bean,将bean之间的依赖关系注入
- IOC是典型的工厂模式,通过sessionfactory去注入实例。
引入IOC的目的:
降低类之间的耦合
倡导面向接口编程,实施依赖关系倒换原则
提高系统可插入、可测试、可修改等
IOC底层原理
xml解析,工厂模式,反射
什么是DI
- 属性的依赖注入,spring在通过IOC创建对象的时候,如果对象还有属性,就一并给赋值进去DI是在IOC的基础上进行对象的属性注入
依赖注入的三种实现方式?
- 构造器注入,Setter方法注入,接口注入
解释Spring支持的几种bean的作用域
- 1.singleton :bean在每个Spring ioc 容器中只有一个实例。
- 2.prototype:一个bean的定义可以有多个实例。
- 3.request:每次http请求都会创建一个bean,该作用域仅在基于web的Spring ApplicationContext情形下有效。
- 4.session:在一个HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
- 5.global-session:在一个全局的HTTP Session中,一个bean定义对应一个实例。该作用域仅在基于web的Spring ApplicationContext情形下有效。
简要回答:
singleton(单例模式)
prototype(原型模式)
request(HTTP请求)
session(会话)
global-session(全局会话)
Spring支持的事务管理类型
a、编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
b、声明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
你更倾向用那种事务管理类型?
- 大多数Spring框架的用户选择声明式事务管理,因为它对应用代码的影响最小,因此更符合一个无侵入的轻量级容器的思想。声明式事务管理要优于编程式事务管理,虽然比编程式事务管理(这种方式允许你通过代码控制事务)少了一点灵活性。
Spring面向切面编程(AOP)
什么是AOP
全称是 Aspect Oriented Programming 即:面向切面编程。是OOP的延续,也是Spring框架中的一个重要内容,是函数式编程的一种衍生泛型。简单的说他就是把我们程序重复的代码抽取出来,在需要执行的时候使用动态代理技术在不修改源码的基础上,对我们的已有方法进行增强。
解释AOP
- 在软件业,AOP为Aspect Oriented Programming的缩写,意味:面向切面编程.通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术,AOP是OOP的延续.将一些共性的内容进行抽取,在需要用到的地方,以动态代理的方式进行插入.在不修改源码的基础上,还能对源码进行前后增强。
-
AOP(面向切面编程)
AOP是OOP的延续,是软件开发中的一个热点,也是Spring框架中的一个重要内容,是函数式编程的一种衍生范型。利用AOP可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。
-
主要功能
-
日志记录,性能统计,安全控制,事务处理,异常处理等等。
-
主要意图
将日志记录,性能统计,安全控制,事务处理,异常处理等代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导业务逻辑的方法中,进而改变这些行为的时候不影响业务逻辑的代码。
-
图片解释:
-
什么是通知?有哪五种类型的通知?
- 通知是个在方法执行前或执行后要做的动作,实际上是程序执行时要通过SpringAOP框架触发的代码段。Spring切面可以应用五种类型的通知:
- before:前置通知,在一个方法执行前被调用。
- after: 在方法执行之后调用的通知,无论方法执行是否成功。
- after-returning: 仅当方法成功完成后执行的通知。
- after-throwing: 在方法抛出异常退出时执行的通知。
- around: 在方法执行之前和之后调用的通知