spring框架的基本结构有哪些(Spring功能总结)

本文目录
Spring功能总结
1 什么是spring ?
Spring是一个轻量级的控制反转(IoC)和面向切面(AOP)的容器框架.
spring的设计思想是,单例模式和工厂模式
2 spring的四大特点(优点)
轻量级,低侵入的设计
Spring的DI机制降低了业务对象替换的复杂性
spring不依赖于web容器,独立于各种应用服务器, Write Once,Run Anywhere(一次编译到处运行)
高度开放性:Spring并不完全依赖于Spring,开发者可自由选用Spring框架的部分或全部,它的架构仍然是内在稳定的
3 spring的组成部分 七大模块
Spring Core:Spring的基石,提供了Spring的最主要的核心机制:控制反转和依赖注入
Spring Context:提供了Spring的上下文信息,如:国际化,验证等
Spring Web支持:简化了处理多部分请求
Spring MVC框架支持:一个全功能的构建 Web 应用程序的 MVC 实现,MVC 容纳了大量视图技术,其中包括 JSP、Velocity等。
Spring Dao支持:Spring的Dao支持大大的简化了JDBC操作数据库所带来的繁琐
Spring ORM支持 pring框架集成了若干ORM框架,从而提供了ORM的对象关系工具,其中包括 JDO、Hibernate、iBatis和TopLink。
所有这些都遵从Spring的通用事务和DAO异常层结构。
Spring AOP:面向方面编程,提供了事务,日志,权限,安全等处理机制
4 spring的核心机制
1).控制反转(IoC/Inverse Of Control):调用者不再创建被调用者的实例,由spring框架实现(容器创建)所以称为控制反转。
2).依赖注入(DI/Dependence injection) :容器创建创建好实例后再注入调用者称为依赖注入。
什么是ioc容器
bean工厂(BeanFactory) 和 应用上下文(Application Context)
依赖注入的优点,代码将更加清晰,Spring管理bean的灵巧性,
bean与bean之间的依赖关系放在配置文件里组织,
不再担心对象之间的依赖关系之后,实现更高层次的松耦合将易如反掌
依赖注入的方式 (为什么叫依赖注入 类的四种关系 )
(1)set注入(2)构造注入(3)lookup方法注入
spring 对dao的支持
《1》dao模式优点
减少开发代码量 提高工作效率
降低系统资源消耗 提高系统性能
业务逻辑层与持久层(数据层)的分离,使数据与操作更为清晰。
数据访问独立到了一层,修改具体实现类,不影响系统的架构运行
《2》DAO模式的四个组件
DAO接口
DAO接口实现类
pojo值对象
DAO实例的定位(工厂 或 spring注入)
Spring 面向方面编程(AOP) spring支持AOP功能,AspectJ更完美的支持AOP
AOP 的核心构造是方面,它将那些影响多个类的行为封装到可重用的模块中, 将系统中通用的需求功能隔离出来形成一个功能模块,
并将这个模块切入到应用程序当中, AOP追求的是调用者与被调用者的解耦,从而消除了OOP引起的代码混乱和分散问题,
增强了系统的可维护性和代码的重用性
方面:哪方面 系统中分为业务方面的和非业务方面 Spring主要集中于非业务方面 如(日志、事务、安全、权限等)
1.面向方面与面向切面:AOP的实现中的几个重要的概念:
1.1如果理解为“面向方面编程”:
针对于某一模块进行专门的编写(如:面向日志编程,面向事务编程,面向权限等),其意思就是说面向具体的某个功能模块来编程,然后将其切入到项目中
1.2如果理解为“面向切面编程”:
连接点:程序执行过程中明确的点,如方法的调用或者异常的抛出,举个例子,如果是一个权限系统的话,要控制到类中的某一个具体的方法,那么这个方法就是一个连接点
切入点:连接点的集合,如类中多个个方法的调用, 还是以权限系统来举例,如果要控制一个类中的多个方法的话,那么这几个方法(也即是几个连接点)组成了一个切入点
切面:如果要控制多个类中的多个方法,那么这多个类就组成了一个切面
连接点 --- 切入点 ---- 切面(三者之间的关系可以形象的理解为:点--线--面)
引入(Introduction):添加方法或字段到被通知的类。Spring允许引入新的接口到任何被通知的对象。例如,
你可以使用一个引入使任何对象实现IsModified接口,来简化缓存。
AOP实现过程中的几种不同的方式:
拦截一类中所有的方法(连接点)
拦截一个类中的某些符合条件的方法(切入点)
拦截多个类中的符合条件的方法(切面)
2.1.连接点 --- 切入点 ---- 切面 --- 方面(解决方案的切入点)
2.2.目标对象(也就是:寻找被处理的类)
2.3.AOP代理(具体实现),分为二种,
JDK动态代理(面向接口)
Cglib代理(面向具体类)
2.4.处理(Spring AOP处理)或者叫通知,aop框架在特定的连接点执行的动作,Spring提供了五种处理方式
2.5 Advisor=(处理+切入点)
4 利用aop进行事务编程 Spring事务配置的五种方式 (掌握Spring事务体系图)
传统上,J2EE开发者有两个事务管理的选择: 全局 或 本地事务(局部事务)。全局事务由应用服务器管理,使用JTA。
局部事务是和资源相关的,比如一个和JDBC连接关联的事务
事务种类分为: jdbc事务(局部事务) jta事务(全局事务) 容器事务
1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。局部事务
2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂。全局事务
3、容器事务,主要指的是J2EE应用服务器提供的事务管理,局限于EJB应用
两种事务的比较
1、JDBC事务控制的局限性在一个数据库连接内,但是其使用简单。
2、JTA事务的功能强大,事务可以跨越多个数据库或多个DAO,使用也比较复杂
13.2 Spring与Struts2的整合
由于Struts2得强大可插拔式设计,使得整合spring的工作变得异常简单,
struts2-spring-plugin-2.0.8.jar就是支持spring的插件包
把struts2支持spring的插件包jar拷贝到项目中
Spring框架的作用及基本使用
1.Spring框架的作用
Spring框架主要用于与其他技术(struts,hibernate等)进行整合,
可将应用程序中的Bean组件实现低耦合关联.最终可以提高系统扩展
和维护性.
将来我们利用Spring框架管理系统的各个组件(Action,Service,DAO)
.采用Spring的IOC和AOP机制实现各组件的关联.从而实现了低耦合调用.增强了系统可维护性和扩展性.
2.Spring框架容器的基本使用
Spring框架的核心是提供了一个容器,该容器可以对Bean组件进行管理,例如创建Bean对象,销毁一个Bean对象等操作.此外该容器还具有IOC和AOP高级特性,将Bean对象调用解耦.
*1)Spring容器配置
创建工程,在src下引入applicationContext.xml配置文件,并添加spring-ioc开发包.
在applicationContext.xml中声明定义Bean组件格式:
*2)Spring容器如何实例化
BeanFactory--ApplicationContext(推荐)
ApplicationContext ac =
new ClassPathXmlApplicationContext("xml配置文件");
ac.getBean("标识符");//获取Bean组件对象
3)Spring容器如何管理Bean组件
*a)控制Bean组件对象的创建方式
在元素利用scope属性.Spring可以控制Bean对象创建方式. 默认情况下scope属性可以用singleton和prototype两种值.
singleton:采用单例方式创建(默认采用)
prototype:采用(原型)非单例方式创建
---------------------------------------------------
在以后Web环境中,scope还可以有几个扩展属性值.
request:将Bean对象与request对象绑定.
session:将Bean对象与session对象绑定.
---------------------------------------------------
b)Bean组件对象的创建时机
singleton模式:当实例化Spring容器时,会创建所有的单例对象.
可以在元素中使用lazy-init属性控制,将对
象创建时机延迟到第一次调用getBean方法.
prototype模式:在调用Spring容器的getBean方法时创建.
c)指定Bean组件对象创建后初始化和销毁处理方法
指定初始化方法:利用元素的init-method属性指定
指定销毁方法:利用元素的destroy-method属性指定.
该属性仅对scope="singleton"有效.

更多文章:
diverse culture课件(英语邮件范例:旅游英语怎么表达)
2026年3月2日 00:30
字符串全排列(abcdefgh由这八个字符构成的全排列字符串,要求不能出现以下子串:abc ,de,gh.求能有)
2026年3月9日 23:15
javascript 字符串转数字(如何用JavaScript对字符串进行解析并计算出结果)
2025年5月28日 03:00
如何使用u盘安装linux系统(怎么用u盘安装过linux详细步骤!)
2026年1月10日 17:45
domestic abuse only happens(帮我翻译一下这段英语 谢谢啦 ~!!!!!!!!!!!!!!!!!!!)
2026年4月17日 08:45
settimeout怎么停止(window.setTimeout 停止 取消)
2025年6月10日 15:15
word如何设置图片居中?网页中如何用HTML/CSS实现文字居中于图片
2025年6月28日 16:15
php教程视频谁的好(哪里的php视频教程不错我想自学php)
2026年5月11日 14:15
unity 命名空间(为什么unity无法将脚本添加到空的对象)
2026年1月21日 21:00
decimal在python(python字符的精度不够,用什么填充)
2026年8月13日 02:15
禁止iframe嵌套(https页面iframe嵌套http的页面,弹出警告,怎么解决)
2026年5月5日 09:45












