Spring框架概述

来源:互联网 发布:新精英生涯 骗局 知乎 编辑:程序博客网 时间:2024/06/08 05:55

1.Spring框架介绍
Spring是一个java平台,用于在java应用开发中提供多样的基础功能支持。
Spring使我们能够使用过POJOs(plain old Java objects)的方式开发应用程序,并且能将企业级服务应用于POJOs中。这些功能在Java SE与Java EE中同样适用。
2.依赖注入(DI)与控制反转(IoC)
通常java应用通过对象间的相互协作完成其功能,无论是嵌入式应用还是服务端应用都是如此。因此在每个应用中各对象之间是相互依赖的关系。
尽管Java平台本身已经提供了丰富的功能方便开发,但这些基础开发模块并没有一个整体的概念,整合的工作需要架构师是开发者自己来完成。虽然我们可以通过一些设计模式如工厂模式,抽象工厂模式,装饰器模式等见应用中的类和对象实例组合在一起。但我们不得不自己实现这些形式化的设计模式。
Spring框架的IoC模块旨在提供一种可以直接在应用开发中使用的标准化的模块整合方式。Spring框架将形式化的设计模式编写成一流对象,我们可以直接整合在工程中。众多的组织和机构同时使用spring框架的方式来提高工程的稳定性和可维护性。
3.Spring主要模块简介
Spring框架将其功能组织成大约20个模块。这些模块分别属于Core容器,数据访问和集成,Web,AOP,Instrumentation,Messaging和测试等几个主模块中。如下图所示。
Spring 框架概略图
以后还会介绍各个主模块的特点,命名方式和主要解决的问题,其中命名方式与artifact ID关系密切。
3.1 Core容器
上图中的Core容器由spring-core, spring-beans, spring-context, spring-context-support 和 spring-expression子模块组成。
其中的spring-core, spring-beans模块是整个spring框架的根基,其中包括IoC和DI功能。其中的BeanFactory是一个非常成熟的工厂模式实现,这使得编码过程中单例模式的实现并非必须的,同时实现了工程中配置,依赖关系和代码逻辑之间的解耦。
Core 和 Beans模块为 Context (spring-context)模块的建立提供了稳固的基础:这意味着对象访问会通过framework-style方式完成,类似于JNDI注册表。Context模块继承自Beans模块,同时又增加了对国际化,事件传播,资源重载的支持,并且创建对象过程对用户透明。同时Context模块还支持Java EE的一些主要技术,如EJB,JMX和远程调用等。ApplicationContext接口是Context模块的核心。spring-context-support为第三方库整合进Context提供支持, 如缓存 (EhCache, Guava, JCache), 邮件(JavaMail), scheduling (CommonJ, Quartz) 和 template engines (FreeMarker, JasperReports, Velocity)等.
spring-expression模块提供了一种在运行时请求和操作对象的表达式语言。这是一种对标准表达式语言(unified EL)的扩展,包含在JSP2.1规范中。该语言支持属性值的get和set方法,属性的声明,方法调用,数组内容的访问,逻辑和数学运算,声明变量,甚至在IoC容器中按名字检索对象等。还支持列表投影,选择和重用的聚合。
3.2 AOP 和 Instrumentation
spring-aop模块提供了切面编程的实现方式,用来定义方法拦截器和切面,干净的实现功能的解耦。另外的spring-aspects模块提供了与AspectJ整合的支持。
spring-instrument模块提供指定应用服务中使用类instrumentation和classloader实现的支持。spring-instrument-tomcat模块包含了支持tomcat 的spring代理。
3.3 消息传递Messaging
spring 4包含了spring-messaging模块,其中包括了Message, MessageChannel, MessageHandler模块,作为消息传递的底层功能支持。该模块中也包含了大量的注解,与Spring MVC的开发中使用的注解类似。
3.4 数据访和集成
数据访问和集成中包括了JDBC,ORM,OXM,JMS以及事务模块。
spring-jdbc模块提供了 JDBC抽象层,这使开发者从繁琐的JDBC代码编写和解析数据库供应商特定的错误代码的工作中解脱出来。
spring-tx模块支持编程和声明式的事务管理,适用于特定接口的实现类和所有po类。
spring-orm模块提供了与常用ORM框架的整合层,如 JPA, JDO 和 Hibernate。使用该模块可以使这些ORM框架和spring提供的功能一起使用,如前面提到的简单事务管理。
spring-oxm模块提供了支持 Object/XML mapping实现的抽象层,如JAXB, Castor, XMLBeans, JiBX 和 XStream.
spring-jms模块提供了消息生产和消费的功能。但从spring 4.1版本后没这部分功能已经整合在spring-messaging模块中。
3.5 Web开发
spring的web层中包括spring-web, spring-webmvc, spring-websocket, spring-webmvc-portlet模块
spring-web模块提供了基础的面向文本开发的功能,如multipart file上传功能,使用Servlet listeners初始化IoC容器和面向web应用的context容器。其中还提供了HTTP客户端和spring 远程调用的web部分。
spring-webmvc模块包含了web应用中的springMVC和REST Web Services实现。Spring MVC框架将model代码,web表单和以及整合的spring框架中其他功能清晰的分离开。
spring-webmvc-portlet模块提供了在Portlet环境中的MVC实现,包含spring-webmvc模块中相同的功能。

0 0
原创粉丝点击