spring总结

Spring框架由Rod Johnson创作,旨在简化Java企业级开发,提供轻量级、分层架构,包括核心容器、AOP、数据访问/集成等多个模块。核心容器由BeanFactory和ApplicationContext组成,负责组件的生命周期管理。依赖注入(DI)是Spring的重要特性,通过构造器注入和setter注入方式实现对象间依赖关系的解耦。Spring的IoC容器通过读取配置元数据实例化Bean,提供单例和原型两种作用域。此外,Spring还支持AOP,实现横切关注点的分离,提供了前置、后置、环绕等多种通知类型。
摘要由CSDN通过智能技术生成

一、spring的起源和背景

Rod Johson在2002年编著的《Expert one to one J2EE design and development》一书中,对Java EE正统框架臃肿、低效、脱离现实的种种现状提出了质疑,并积极寻求探索革新之道。以此书为指导思想,他编写了interface21框架,这是一个力图冲破Java EE传统开发的困境,从实际需求出发,着眼于轻便、灵巧,易于开发、测试和部署的轻量级开发框架。Spring框架即以interface21框架为基础,经过重新设计,并不断丰富其内涵,于2004年3月24日,发布了1.0正式版。

Spring致力于J2EE应用的各层的解决方案,而不是仅仅专注于某一层的方案。可以说Spring是企业应用开发的“一站式”选择,并贯穿表现层、业务层及持久层。然而,Spring并不想取代那些已有的框架,而与它们无缝地整合。

spring的设计目标:遵循一系列的接口标准,这样的好处是只需要简单的Java对象或者Javabean就能进行Java EE开发,这样开发的入门、测试、应用部署都得到了简化。

二、spring简介

Spring是一个开源的用于简化采用Java语言开发企业级程序的一个分层的框架。

Spring是一个开源框架,它由Rod Johnson创建。它是为了解决企业应用开发的复杂性而创建的。Spring使用基本的JavaBean来完成以前只可能由EJB完成的事情。然而,Spring的用途不仅限于服务器端的开发。从简单性、可测试性和松耦合的角度而言,任何Java应用都可以从Spring中受益。

三、spring的核心模块

 

 

 

 Spring 框架是一个分层架构,由 7 个定义良好的模块组成。Spring 模块构建在核心容器之上,核心容器定义了创建、配置和管理 bean 的方式,组成 Spring 框架的每个模块(或组件)都可以单独存在,或者与其他一个或多个模块联合实现。每个模块的功能如下:  

(1)Spring Core:核心容器,BeanFactory提供了组件生命周期的管理,组件的创建,   装配,销毁等功能

核心容器提供 Spring 框架的基本功能。核心容器的主要组件是 BeanFactory,它是工厂模式的实现。BeanFactory 使用控制反转IOC) 模式将应用程序的配置和依赖性规范与实际的应用程序代码分开。

 

(2)Spring 上下文

Spring 上下文是一个配置文件,向 Spring 框架提供上下文信息。Spring 上下文包括企业服务,例如 JNDI、EJB、电子邮件、国际化、校验和调度功能。

(3)Spring AOP提供切面支持

通过配置管理特性,Spring AOP 模块直接将面向方面的编程功能集成到了 Spring 框架中。所以,可以很容易地使 Spring 框架管理的任何对象支持 AOP。Spring AOP 模块为基于 Spring 的应用程序中的对象提供了事务管理服务。通过使用 Spring AOP,不用依赖 EJB 组件,就可以将声明性事务管理集成到应用程序中。

(4)Spring DAO:提供事务支持,JDBC,DAO支持  

JDBC DAO 抽象层提供了有意义的异常层次结构,可用该结构来管理异常处理和不同数据库供应商抛出的错误消息。异常层次结构简化了错误处理,并且极大地降低了需要编写的异常代码数量(例如打开和关闭连接)。Spring DAO 的面向 JDBC 的异常遵从通用的 DAO 异常层次结构。

(5)Spring ORM:对流行的O/R Mapping封装或支持

Spring 框架插入了若干个 ORM 框架,从而提供了 ORM 的对象关系工具,其中包括 JDO、Hibernate 和 iBatis SQL Map。所有这些都遵从 Spring 的通用事务和 DAO 异常层次结构。

(6)Spring Web 模块:提供Web应用上下文,对Web开发提供功能上的支持,如请求,表单,异常等。

Web 上下文模块建立在应用程序上下文模块之上,为基于 Web 的应用程序提供了上下文。所以,Spring 框架支持与 Jakarta Struts 的集成。Web 模块还简化了处理多部分请求以及将请求参数绑定到域对象的工作。

(7)Spring MVC 框架:全功能MVC框架,作用等同于Struts。

MVC 框架是一个全功能的构建 Web 应用程序的 MVC 实现。通过策略接口,MVC 框架变成为高度可配置的,MVC 容纳了大量视图技术,其中包括 JSP、Velocity、Tiles、iText 和 POI。

Spring 框架的功能可以用在任何 J2EE 服务器中,大多数功能也适用于不受管理的环境。Spring 的核心要点是:支持不绑定到特定 J2EE 服务的可重用业务和数据访问对象。毫无疑问,这样的对象可以在不同 J2EE 环境 (Web 或 EJB)、独立应用程序、测试环境之间重用。

 

ApplicationContext容器以及事件机制

spring容器最基本的接口是BeanFactory,负责配置、创建、管理bean,他的子接口之一:ApplicationContext,也叫做spring的上下文。ApplicationContext是BeanFactory的子接口,在web应用中,通常会用到XmlWebApplicationContext、AnnotationCofigWebApplicationContext两个实现类。

1)ApplicationContext简介

    系统创建ApplicationContext容器的时候,默认会预先初始化所有的单例的bean,调用构造器创建实例对象,然后通过set方法注入依赖的对象实例。这样的情况下,也就是说会面临着一个问题,容器在初始化的时候会有较大的性能的消耗,但是一旦初始化完成之后,程序在获取单例的bean的时候,又会获得较好的性能。

2)ApplicationContext的事件机制

    ApplicationContext的事件机制属于观察者设计模式(设计模式篇会在后期专门推出请读者关注),通过ApplicationEvent和ApplicationListener接口,可以实现ApplicationContext的事件处理。

spring事件机制中ApplicationEvent和ApplicationListener起到重要作用。其中,ApplicationEvent:由ApplicationContext发布。ApplicationListener可以由容器里面任何的监听器bean担任。

 

3)spring的内置事件:

(1) ContextRefreshedEvent:ApplicationContext容器初始化或者刷新的时候会触发这个事件。

(2) ContextStartedEvent:当使用ConfigurableApplicationContext(applicationContext的子接口)接口的start方法启动ApplicationContext容器的时候触发这个事件。

(3)ContextClosedEvent:当使用ConfigurableApplicationContext(applicationContext的子接口)接口的close方法启动ApplicationContext容器的时候触发这个事件。

(4)ContextStoppedEvent:当使用ConfigurableApplicationContext(applicationContext的子接口)接口的stop方法启动ApplicationContext容器的时候触发这个事件。

(5)RequestHandledEvent:web相关的事件,只能用在DispatcherServlet的web应用中,在使用spring作为mvc控制器的时候,处理完用户的请求后,系统会自动的调用。

另外webSocket服务中,还有,SessionConnectedEvent、SessionConnectEvent、SessionDisconnectEvent三个事件。

四、依赖注入(DI)

1 .依赖和依赖注入

       传统应用程序设计中所说的依赖一般指“类之间的关系”

     泛化:表示类与类之间的继承关系、接口与接口之间的继承关系;

     实现:表示类对接口的实现;

     依赖&#x

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值