Spring概述与架构

   Spring概述与架构
   Spring核心之一——Ioc/DI(一)

1 Spring概述

  Spring
  Spring是一个开源的轻量级Java SE(Java标准版本)/Java EE(Java企业版本)开发应用框架,其目的是用于简化企业级应用程序开发。
  在传统的应用程序开发中,一个应用程序除了需要业务逻辑之外,还需要一些相互协作的对象来完成所需的功能。而Spring框架可以根据配置文件来帮助我们创建这些对象,并且管理对象之间的依赖关系,从而达到对象之间低耦合的目的。
  Spring框架除了管理对象的创建及其依赖关系外,Spring面向切面编程还能帮助我们无耦合的实现日志记录、性能统计、权限控制、异常处理等功能。一般通过配置方式就可以实现,而不需要添加任何代码,使现有代码专注于业务逻辑。
  Spring还提供了管理数据库事务的功能。传统应用程序中管理数据库事务需要“获取连接,执行sql,提交或回滚事务,关闭连接”等一些列操作。而在Spring中我们只需要获取连接,执行sql,其它的都交给Spring来管理。
  Spring本身实现了一套简单的JDBC访问模板,提供了与第三方数据访问框架的集成(如Hibernate、JPA等),与各种Java EE技术整合(如Java Mail、任务调度、缓存架构等)。并且还提供了一套自己的web层框架Spring MVC,还能集成第三方web框架(如Struts2、JSF等)。所以Spring除了本身能提供功能外,还能整合其它的技术框架,从而让我们更自由的选择开发技术。

  Spring的特点
  1.轻量级的容器:轻量级是相对于重量级而言的,轻量级一般是非入侵性的、所依赖的东西少、资源占用少、部署简单等,相对容易使用。Spring是以集中的、自动化的方式进行对象创建和管理。Spring容器是非侵入式的,并且完全采用POJOs进行开发,使应用程序更容易测试和管理。
  2.AOP(Aspect Oriented Programming):面向切面编程,可以实现在编译期间、装载期间或运行期间给程序动态的添加功能而不修改原始代码。相当于将一些可重用的功能(比如权限管理、日志记录、事务处理、异常处理等)抽取出来,然后通过面向切面编程,在需要的时候织入到程序中。
  3.简单的数据库事务管理:Spring提供了简单的数据库事务管理功能。
  4.JDBC的抽象以及ORM框架的支持:Spring提供了一套访问JDBC的模板,使数据库的访问变得简单。还能方便的集成第三方ORM框架(如Hibernate、JPA、MyBatis等)。
  5.Web层支持:Spring提供了自己的MVC框架,并且能集成第三方MVC框架(Struts2、JSF等)。
  6.简化技术集成:Spring提供了对Java Mail、任务调度、JMX、JMS、JNDI、EJB、动态语言、远程访问、Web Service等技术的集成。

  概念理解
  1.非侵入式设计:在开发过程中,无需继承框架提供的类。如果继承了这些框架类,就是侵入式设计,以后想更换框架,之前的代码几乎无法重用。
  2.POJO(Plain Old Java Objects):简单的Java对象,它可以包含业务逻辑或持久化逻辑,但不担当任何特殊角色且不继承或实现任何其它Java框架的类或接口。
  3.容器:从程序设计角度看就是装对象的对象,因为有放入、拿出等操作,所以容器还需要管理对象的生命周期。

2 Spring4x架构

spring架构图

  核心容器(Core Container):Beans、Core、Context、Spring Expression Language
  Beans(spring-beans):框架的基础,包括控制反转(IoC)和依赖注入(DI)。其中Bean Factory是容器核心,使用工厂设计模式来实现,应用程序的对象和对象间的依赖关系由Bean Factory来管理维护。
  Core(spring-core):框架的核心,包括资源访问、类型转换及一些常用工具类。
  Context(spring-context、spring-context-support):以Core和Beans为基础,集成Beans模块并提供了资源绑定、数据验证、国际化、Java EE支持、容器生命周期、事件传播等扩展功能,核心接口是ApplicationContext,它实现了Bean Factory接口。spring-context-support为集成第三方库(如定时器Quartz)提供支持。
  SpEL(spring-expression):表达式语言,支持访问和修改属性值,方法调用,支持访问及修改数组、容器和索引器,命名变量,支持算数和逻辑运算等。

  AOP
  AOP(spring-aop):面向切面编程,提供了日志记录、权限控制、性能统计、事务处理等通用功能,将这些功能与业务逻辑分离,并且能动态的把这些功能添加到代码中,降低业务逻辑和通用功能的耦合性。

  Aspects
  Aspects(spring-aspects):提供了对AspectJ的集成,AspectJ提供了比Spring ASP更强大的功能。

  Instrumentation
  Instrumentation(spring-instrumen、spring-instrument-tomcat):提供了对应用服务器的代理接口。spring-instrument-tomcat是Spring对tomcat连接池的集成。

  Messaging
  Messaging(spring-messaging):对Spring集成项目Message、MessageChannel和MessageHandler进行了重要的抽象,它是消息发送应用的基础。

  数据访问/集成(Data Access/Integration):JDBC、ORM、OXM、JMS、Transactions
  JDBC(spring-jdbc):提供了一个JDBC的模板,使用模板可以消除传统冗长的JDBC编码以及必须的事务控制。
  ORM(spring-orm):可以集成第三方ORM框架技术,包括Hibernate、JPA、MyBatis等。还可以使用Spring事务管理,无需额外控制事务。
  OXM(spring-oxm):提供了对Object/XML映射的支持,可以将Java对象映射成XML数据,或者将XML数据映射成Java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。
  JMS(spring-jms):JMS(Java Messaging Service),提供了一套模板用于更加简单的使用JMS,JMS用于两个应用程序之间,或分布式系统中发送消息,进行异步通信。
  Transactions(spring-tx):Spring的事务管理,无需在代码中进行事务控制,支持编程式和声明式的事物管理。

  Web:Web、WebSocket、Servlet、Portlet
  Web(spring-web):提供了基础的web功能。例如多文件上传、集成IoC容器、远程过程访问(RMI、Hessian、Burlap)以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问。
  WebSocket(spring-websocket):支持WebSocket服务。
  Servlet(spring-webmvc):Spring MVC框架,它提供了基于注解的请求资源注入、更简单的数据绑定、数据验证等及一套非常易用的JSP标签,完全无缝与Spring其他技术协作。除了Spring MVC,还包括对REST Web Service的实现。
  Portlet(spring-webmvc-portlet):提供了在Portlet环境下的MVC实现,是对Spring MVC的增强。

  Test
  Test(spring-test):支持Junit和TestNG测试框架,还额外提供了一些基于Spring的测试功能,比如在测试Web框架时,模拟Http请求的功能。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值