Spring的概念
Spring是个java企业级应用的开源开发框架,旨在降低应用程序开发的复杂度。是一个轻量级,松散耦合的,具有分层体系结构,可继承其他框架的框架。
Spring的优点
轻量:基本的版本大约2MB。
控制反转(IOC):实现了松散耦合,将对象交给容器管理,对象们给出它们的依赖,由容器去创建或查找(简述:反转:指的是资源的反转,之前是对象去容器请求,控制反转后,是容器向调用者注入)。
在系统运行时,容器创建被调用者,然后注入调用者中,这种情况叫做依赖注入(DI),依赖注入是通过java的反射机制实现的。
反射:允许程序在运行的时候动态地生成对象,执行对象,设置对象属性。
面向切面(AOP):
面向切面编程把软件系统分为两个部分:核心关注点和横切关注点,将业务程序和系统服务分开;
面向切面编程是基于代理模式实现的;
代理模式分为:
静态代理:编译时
动态代理:运行时
动态代理实现的两种方式:JDK代理和CGlib代理
JDK基于接口的动态代理
CGilb实现子类的动态代理
容器:Spring包含并管理对象的生命周期和配置:
MVC框架:Spring的WEB框架
事务管理:Spring提供了一个持续的事务管理接口,可以扩展上至本地事务下至全局事务(JTA)
异常处理:把具体技术相关的异常转化为一致的unchecked异常
解释JDBC抽象和DAO模块
保证数据库代码的简洁,并能避免数据库资源错误关闭导致的问题,在各种不同的数据库的错误信息之上,提供了一个统一的异常访问层,提供事务管理服务。
BeanFactory和Application contexts区别?
Application contexts 提供了一个方法处理文本信息,一个通常的做法是加载文本资源(比如镜像),可以向注册为监听器的bean发布事件。
在容器或容器内的对象,由BeanFactory以程序化方式处理操作,也可以在Application contexts中以声明的方式处理。
依赖注入的方式:
1.构造器依赖注入:构造器依赖注入通过容器触发一个类的构造器来实现的,该类有一系列参数,每个参数爱表一个对其他类的依赖。
2.Setter方式注入:Setter方法注入是容器通过调用无参构造器或者无参static工厂方法实例化bean之后,调用该bean的setter犯法。即实现了基于setter的依赖注入。
用构造器参数实现强制依赖,setter方法实现可选依赖。
Spring Bean的定义包含什么?
容器必知的所有配置化元数据,包含如何创建一个bean,它恶生命周期详情及它的依赖。
配置元数据的方法:
1.XML配置文件。
2.基于注解的配置。
3.基于java的配置。
定义类的作用域
bean定义中的scope,默认singleton(单例)
spring支持bean的作用域:
1.singleton:bean在每一个spring ioc容器中只有一个实例。
2.prototype:一个bean可以有多个实例。
3.request:每次http请求就回创建一个bean,仅基于web的ApplicationContext情形下有效。
4.session:在一个http session中,一个bean定义对应一个实例。同3条件。
5.global-session:在一个全局的http session中,一个bean定义对应一个实例,同3,4的条件下。
spring的bean是非线程安全的
重要的bean生命周期方法:setup,容器加载bean的时候被调用;teardown,容器卸载类的时候被调用。
bean的装配:
容器必须知道bean的依赖关系,以及如何依赖注入来把它们组装在一起。
自动装配的方式:
1.no:默认不进行自动装配,通过显示设置ref属性来进行装配
2.byName:通过参数名自动装配,antowire属性被设置成byname,容器试图匹配,装配和该bean具有相同名字的bean。
3.byType:通过参数类型自动装配,autowire属性设置为bytype,具有同类型的bean。多个bean符合将抛出异常。
4.constructor:这个方式类似于byType, 但是要提供给构造器参数,如果没有确定的带参数的构造器参数类型,将会抛出异常。
5.autodetect:首先尝试使用constructor来自动装配,如果无法工作,则使用byType方式。
Spring支持的事务管理类型
Spring支持两种类型的事务管理:
编程式事务管理:这意味你通过编程的方式管理事务,给你带来极大的灵活性,但是难维护。
明式事务管理:这意味着你可以将业务代码和事务管理分离,你只需用注解和XML配置来管理事务。
网友评论