spring

本文详细介绍了Spring框架的核心功能,包括IoC容器、AOP模块、事务管理等,以及Spring框架如何简化Java EE应用开发,提高代码的可维护性和可扩展性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >



1.

spring是一个轻量级控制反转(IoC)和面向切面(AOP)的容器框架,它主要是为了解决企业应用开发的复杂性而诞生的:
目的:解决企业应用开发的复杂性
功能:使用基本的JavaBean代替EJB
范围:任何Java应用

2.

Spring的存在是因为它自身有着得天独厚的优势:
它定位的领域是许多其他流行的framework没有的
Spring是全面的和模块化的
它的设计从底部帮助你编写易于测试的代码
Spring是潜在的一站式解决方案

3.

Spring天生就存在如下的优点:
低侵入式设计,代码污染极低
Write Once, Run Anywhere
DI有效的降低了耦合度
AOP提供了通用任务的集中管理
ORM和DAO简化了对数据库访问
高度开放性,并不强制

Spring的优点给开发带来的好处:
可以有效组织中间层对象
使用统一的配置文件
促进良好编程习惯,减少编程代价
易于单元测试
使EJB成为一种备选
为数据存取提供了一致的框架

4.

方便解耦,简化开发
AOP编程的支持
声明式事务的支持
方便程序的测试
方便集成各种优秀框架
降低JavaEE API的使用难度
Spring的源码是经典学习范例

5.


核心容器(Spring Core)
应用上下文(Spring Context)
AOP模块(Spring AOP)
JDBC和DAO模块(Spring DAO)
对象实体映射(Spring ORM)
Web模块(Spring Web)
MVC模块(Spring Web MVC)

二、Spring之IOC

1.浅谈IOC

IOC(Inversion of Control,控制反转)是spring的核心,贯穿始终。

所谓IOC,对于spring框架来说,就是由spring来负责控制对象的生命周期和对象间的关系:
传统开发模式:对象之间互相依赖
IOC开发模式:IOC容器安排对象之间的依赖

2.依赖注入DI

IOC的另外的名字叫做依赖注入(Dependency Injection),所谓的依赖注入,就是由IOC容器在运行期间,动态地将某种依赖关系注入到对象之中。

所以,依赖注入(DI)和控制反转(IOC)是从不同的角度的描述的同一件事情,就是指通过引入IOC容器,利用依赖关系注入的方式,实现对象之间的解耦

3.IOC的好处

IOC在编程过程中不会对业务对象构成很强的侵入性,使用IOC之后,对象具有更好的可实行性,可重用性和可扩展性:
降低组件之间的耦合度
提高开发效率和产品质量
统一标准,提高模块的复用性
模块具有热插拔特性

4.IOC通俗的理解

IOC控制反转:说的是创建对象实例的控制权从代码控制剥离到IOC容器控制,实际就是你在xml文件控制,侧重于原理
DI依赖注入:说的是创建对象实例时,为这个对象注入属性值或其它对象实例,侧重于实现

三、Spring之AOP

1.AOP的概念

通俗理解:面向切面编程,AOP将应用系统分为两个部分:核心业务逻辑、横向的通用逻辑(即:方面:持久化管理、事务管理、安全管理、日志管理,调试管理等等)
在Spring当中提供了面向切面编程的丰富支持:允许通过分离应用的业务逻辑与系统及的服务,进行内聚性的开发,应用对象只实现他们应该做的,也就是完成
业务逻辑,并不负责其他关注点。

2.AOP和OOP的关系

AOP是对OOP面向对象编程有意的补充,同时AOP也是OOP的延续
OOP:从静态角度考虑程序结构,即:OOP对业务处理过程的中的实体、以及属性和行为进行了抽象的封装,也或得更加清晰高效果的逻辑划分,研究的是静态的领域
AOP:从动态角度考虑程序运行过程,即:针对业务处理过程中的切面进行提取,它所面对的是处理中的某个步骤或者阶段,研究的是静态的领域

3.AOP的主要功能

主要是用于系统级别的功能。例如:日志记录、性能统计、安全控制、事务处理、异常处理等等

4.AOP的主要意图

把代码从业务逻辑代码中划分出来,通过对这些行为的分离,我们希望可以将它们独立到非指导性业务逻辑方法当中
进而改变这一行为的时候,不影响业务逻辑代码的处理。也就是说:AOP把一些常用的服务进行模块化,并且用声明的方式
将这些组件使用到其他的业务组件中去,这样做的结果是,每一个业务组件,只需要关系自己的业务逻辑,而不用理解一些常用的
业务组件,这样就保证了更高的内聚性。
使用AOP你可以将处理切面等代码注入程序,通常主程序的主要目的并不在于处理这些切面的功能,所以AOP可以有效的防止代码混乱
spring-framework的AOP作为一种轻型的AOP-framework,无需使用预编译器,或其他元标签,可以在JAVA程序中使用。

5.AOP的价值

AOP 专门用于处理系统中分布于各个模块中的交叉关注点的问题,在 Java EE 应用中,常常通过 AOP 来处理一些具有横切性质的系统级服务,

如事务管理、安全检查、缓存、对象池管理等,AOP 已经成为一种非常常用的解决方案

6.AOP的 原理剖析

AOP 代理其实是由 AOP 框架动态生成的一个对象,该对象可作为目标对象使用,AOP 代理所包含的方法与目标对象的方法如下图所示:

●定义普通业务组件
●定义切入点
●定义增强处理 

代理对象的方法 = 增强处理 + 被代理对象的方法

7.AOP的关键概念

以下是官方文档所给出的AOP的关键概念的解释:
切面 - Aspect
连接点 - Join Point
通知 - Advice
切入点 - Point Cut
引入 - Introduction
目标对象 - Target Object
AOP代理 - AOP Proxy
织入 - Weaving

8.AOP的通俗理解

AOP通俗的理解:
一个组件A,不关心其他常用的服务组件B,但是这个组件A使用组件B的时候,不是组件A自身去调用,而是通过配置等其他方式,

比如Spring中可以通过xml配置文件。这样就使得A压根就不需要知道服务组件B是怎样的,爱存在不存在,爱怎么存在都与A无关。

A只关心自己的业务逻辑,具体A使用B的时候,配置文件去做,与具体的A组件无关。

四、Spring开发包介绍

1.Spring的核心开发包的基本用途

Spring Core:包含Spring框架的核心工具类,是其他组件的基本核心
Spring Beans:是所有应用都要用到的,它包含了访问配置文件、创建和管理Bean、以及进行控制反转、和依赖注入相关的所有类
Spring AOP:包含了使用Spring的AOP特性时所需要的类,利用这个jar文件,可以使用基于AOP的Spring特性。如:声明性的事务管理、日志系统的引入等等
Spring Context:为Spring的核心提供了大量的扩展,能够找到SpringAppliContexts特性时所需要的全部类、JNDI所需要的全部类、UI方面的用来和模版引擎,如:freemarker(用来生成输出文本的通用工具)、jasperreport(报表生成工具)集成的类,
以及校验方面的相关类。

2.Spring的业务组件包(提供了各种企业级服务)

Spring Aspects:提供了对了对AspectJ(面向切面的框架)的支持,以便可以方便的,将面向方面的功能集成进IDE中,比如:Eclipse、Ajdt(Eclipse基金的AspectJ是其中一个比较流行的AOP实现的插件)。

Spring Context Support:包含了支持缓存Cache、JCA(J2EE 连接器架构,是对J2EE标准集的重要补充)、JMX(Java管理扩展)是一个为应用程序、设备、系统等植入管理功能的框架)、邮件服务、任务计划等方面的这些所有类。

Spring Expression:是Spring表达式语言,Spring3.0创建了一种新的方式,用以配置对象的注入,便是Spel (Spring Expression Language (SpEL)),支持在运行时操作和查询对象语法类似于 EL 语言,但是SpEL提供了额外的功能。

Spring Framework Bom:它是在使用 Maven (项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具)时,确保所有的Spring模块,都使用统一的版本。

Spring Instrument:提供Spring3.0对服务器的代理接口。

Spring Instrument Tomcat:提供了Spring3.0对Tomcat连接池的集成。

Spring JDBC:包含了Spring对JDBC数据访问时,进行封装的所有类,Spring提供了两种使用JDBC API的最佳时间,
1.以JdbcTemplate为核心的基于Template JDBC的使用方式
2.是在JdbcTemplate的基础之上构建的基于操作对象的Jdbc的使用方式。

Spring JMS:提供了对JMS 1.0和1.1的支持类,Spring的JMS抽象框架简化了JMS API的使用,并与JMS的提供者平滑的集成,org.springframework.jms.core包提供了在Spring中使用JMS的核心功能,它的模版类处理资源的创建和释放,简化了JMS的使用。

Spring ORM:Spring对DAO特性进行了扩展,使其支持iBatis、JDO、OJB、TopLink,因为hibernate已经独立承包,所以不包含在这个包里面了。这个JAR文件里大部分的类都需要依赖Spring-DAO.jar,所以使用这个包时,要包含进去。

Spring OXM:(Object-to-XML-Mapping的缩写)Spring对Object、XML的映射支持。可以让Java与Xml之间来回切换,是Spring3.0的一个新特性,OXM即是O/X-mapper,O/X映射器这个概念并不新鲜,O 代表 Object,X 代表 XML,它的目的是在Java对象和Xml文档之间相互转换。

Spring Struts:它提供了对Struts框架的支持,可以更方便更容易的集成Struts框架。

Spring test:它提供了对Junit等测试框架的简单封装,这让我们在对Spring的代码进行测试时更加方便和快捷。

Spring tx:即:Spring Transaction它为JDBC、Hibernate、JDO、JPA等提供的一致的声明式的编程式事务管理。

Spring web:包含Web应用研发时用到Spring框架时所需要的核心类,包括自动载入、WebApplicationContext特性的类、Struts和JFF集成类、文件上传的集成类、Filter类和大量辅组工具类。

Spring webmvc:包含了Spring mvc 框架的所有类,包括国际化、标签、视图展映的FreeMarker、jasperreport、Tiles、XSLT相关类,如果项目中使用了独立的MVC框架,则无需使用此类。

Spring webmvc portlet:提供了对Spring mvc的增强,支持了portlet标准

Spring不仅支持,传统的web开发,也支持JSR-168 Portlet开发。Portlet mvc框架尽可能多的采用web mvc框架,使用相同的底层表现层抽象和整合技术。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值