同步操作将从 turnon/blog 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
title: Spring Framework 综述
date: 2019-11-22 10:46:02
categories:
- Java
- 框架
- Spring
- Spring综合
tags:
- Java
- 框架
- Spring
permalink: /pages/9d3091/
Spring Framework 是最受欢迎的企业级 Java 应用程序开发框架。用于构建企业级应用的轻量级、一站式解决方案。
当谈论到大小和透明度时, Spring 是轻量级的。 Spring 框架的基础版本是在 2 MB 左右的。
Spring 框架的核心特性可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO 编程模型来促进良好的编程实践。
Spring Framework 设计理念如下:
下面列出的是使用 Spring 框架主要的好处:
Spring 最核心的两个技术思想是:IoC 和 Aop
IoC
即 Inversion of Control
,意为控制反转。
Spring 最认同的技术是控制反转的**依赖注入(DI)**模式。控制反转(IoC)是一个通用的概念,它可以用许多不同的方式去表达,依赖注入仅仅是控制反转的一个具体的例子。
当编写一个复杂的 Java 应用程序时,应用程序类应该尽可能的独立于其他的 Java 类来增加这些类可重用可能性,当进行单元测试时,可以使它们独立于其他类进行测试。依赖注入(或者有时被称为配线)有助于将这些类粘合在一起,并且在同一时间让它们保持独立。
到底什么是依赖注入?让我们将这两个词分开来看一看。这里将依赖关系部分转化为两个类之间的关联。例如,类 A 依赖于类 B。现在,让我们看一看第二部分,注入。所有这一切都意味着类 B 将通过 IoC 被注入到类 A 中。
依赖注入可以以向构造函数传递参数的方式发生,或者通过使用 setter 方法 post-construction。由于依赖注入是 Spring 框架的核心部分,所以我将在一个单独的章节中利用很好的例子去解释这一概念。
Spring 框架的一个关键组件是面向方面的程序设计(AOP)框架。一个程序中跨越多个点的功能被称为横切关注点,这些横切关注点在概念上独立于应用程序的业务逻辑。有各种各样常见的很好的关于方面的例子,比如日志记录、声明性事务、安全性,和缓存等等。
在 OOP 中模块化的关键单元是类,而在 AOP 中模块化的关键单元是方面。AOP 帮助你将横切关注点从它们所影响的对象中分离出来,然而依赖注入帮助你将你的应用程序对象从彼此中分离出来。
Spring 框架的 AOP 模块提供了面向方面的程序设计实现,允许你定义拦截器方法和切入点,可以实现将应该被分开的代码干净的分开功能。我将在一个独立的章节中讨论更多关于 Spring AOP 的概念。
Spring 当前框架有20个 jar 包,大致可以分为6大模块:
Spring 框架提供了非常丰富的功能,因此整个架构也很庞大。 在我们实际的应用开发中,并不一定要使用所有的功能,而是可以根据需要选择合适的 Spring 模块。
IoC 容器是 Spring 框架的核心。spring 容器使用依赖注入管理构成应用的组件,它会创建相互协作的组件之间的关联。毫无疑问,这些对象更简单干净,更容易理解,也更容易重用和测试。 Spring 自带了几种容器的实现,可归纳为两种类型:
由 org.springframework.beans.factory.BeanFactory 接口定义。 它是最简单的容器,提供基本的 DI 支持。
由 org.springframework.context.ApplicationContext 接口定义。 它是基于 BeanFactory 之上构建,并提供面向应用的服务,例如从属性文件解析文本信息的能力,以及发布应用事件给感兴趣的事件监听者的能力。 注:Bean 工厂对于大多数应用来说往往太低级了,所以应用上下文使用更广泛。推荐在开发中使用应用上下文容器。
Spring 自带了多种应用上下文,最可能遇到的有以下几种:
ClassPathXmlApplicationContext
:从类路径下的 XML 配置文件中加载上下文定义,把应用上下文定义文件当做类资源。
FileSystemXmlApplicationContext
:读取文件系统下的 XML 配置文件并加载上下文定义。
XmlWebApplicationContext
:读取 Web 应用下的 XML 配置文件并装载上下文定义。
范例
ApplicationContext context = new FileSystemXmlApplicationContext("D:\Temp\build.xml");
ApplicationContext context2 = new ClassPathXmlApplicationContext("build.xml");
可以看到,加载 FileSystemXmlApplicationContext
和 ClassPathXmlApplicationContext
十分相似。
差异在于:前者在指定文件系统路径下查找 build.xml 文件;而后在所有类路径(包含 JAR 文件)下查找 build.xml 文件。
通过引用应用上下文,可以很方便的调用 getBean() 方法从 Spring 容器中获取 Bean。
相关 jar 包
spring-core
, spring-beans
, 提供框架的基础部分,包括 IoC 和依赖注入特性。
spring-context
, 在spring-core
, spring-beans
基础上构建。它提供一种框架式的访问对象的方法。它也支持类似 Java EE 特性,例如:EJB,JMX 和基本 remoting。ApplicationContext 接口是它的聚焦点。
springcontext-support
, 集成第三方库到 Spring application context。
spring-expression
,提供一种强有力的表达语言在运行时来查询和操纵一个对象图。
相关 jar 包
spring-aop
,提供了对面向切面编程的丰富支持。spring-aspects
,提供了对 AspectJ 的集成。spring-instrument
,提供了对类 instrumentation 的支持和类加载器。spring-instrument-tomcat
,包含了 Spring 对 Tomcat 的 instrumentation 代理。相关 jar 包
spring-messaging
,包含 spring 的消息处理功能,如 Message,MessageChannel,MessageHandler。Data Access/Integration 层包含了 JDBC / ORM / OXM / JMS 和 Transaction 模块。
相关 jar 包
spring-jdbc
,提供了一个 JDBC 抽象层。
spring-tx
,支持编程和声明式事务管理类。
spring-orm
,提供了流行的对象关系型映射 API 集,如 JPA,JDO,Hibernate。
spring-oxm
,提供了一个抽象层以支持对象/XML 映射的实现,如 JAXB,Castor,XMLBeans,JiBX 和 XStream.
spring-jms
,包含了生产和消费消息的功能。
相关 jar 包
spring-web
,提供了基本的面向 web 的功能,如多文件上传、使用 Servlet 监听器的 Ioc 容器的初始化。一个面向 web 的应用层上下文。
spring-webmvc
,包括 MVC 和 REST web 服务实现。
spring-webmvc-portlet
,提供在 Protlet 环境的 MVC 实现和spring-webmvc
功能的镜像。
相关 jar 包
spring-test
,以 Junit 和 TestNG 来支持 spring 组件的单元测试和集成测试。此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。