什么是Spring?
Spring翻译过来就是春天的意思,字面意思,冠以Spring的意思就是想表示使用这个框架,代表程序员的春天来了,实际上就是让开发更加简单方便,实际上Spring确实做到了。
官网地址:https://spring.io/
Spring 是最受欢迎的企业级 Java 应用程序开发框架,数以百万的来自世界各地的开发人员使用。Spring 框架来创建性能好、易于测试、可重用的代码。也是一个开源的 Java 平台,它最初是由 Rod Johnson 编写的,并且于 2003 年 6 月首次在 Apache 2.0 许可下发布。Spring 是轻量级的框架,其基础版本只有 2 MB 左右的大小。
Spring 框架的核心特性是可以用于开发任何 Java 应用程序,但是在 Java EE 平台上构建 web 应用程序是需要扩展的。 Spring 框架的目标是使 J2EE 开发变得更容易使用,通过启用基于 POJO编程模型来促进良好的编程实践。
Spring 家族
项目列表:https://spring.io/projects
Spring Framework
Spring 基础框架,可以视为 Spring 基础设施,基本上任何其他 Spring 项目都是以 Spring Framework为基础的。包括SpringBoot,SpringCloud等等。
Spring Framework特性
数据访问/集成(Data Access/Integration):
- JDBC: 提供了Java数据库连接,简化了数据库操作。
- ORM: 对象关系映射,支持如Hibernate这样的ORM工具。
- OXM: 对象XML映射,用于将对象与XML数据之间进行转换。
- JMS: Java消息服务,用于处理消息。
- 事务(Transactions): 提供了声明式和编程式的事务管理。
网络(Web):
- WebSocket: 提供了WebSocket通信功能。
- Servlet: 支持Servlet API。
- Web: 包含多种Web开发的支持,如Spring MVC。
- Portlet: 为Portlet环境提供了MVC实现。
面向切面编程(AOP):
- AOP: 提供了面向切面编程的实现,允许定义方法拦截器和切点,以实现诸如事务管理、安全性等横切关注点。
- Aspects: 与AOP相关的一些支持,如与AspectJ的集成。
仪器化(Instrumentation): 提供了类仪器化和资源管理的功能。
消息(Messaging): 提供了消息传递的支持,包括使用消息队列。
核心容器(Core Container):
- Beans: 提供了Bean的定义、创建和管理。
- Core: Spring框架的核心部分,包括IoC和依赖注入功能。
- Context: 提供了框架式的对象访问,如国际化、事件传播等。
- SpEL: Spring表达式语言,用于查询和操作对象图。
测试(Test): 提供了测试Spring组件的支持,如模拟对象和测试框架集成。
特性
- 非侵入式:使用 Spring Framework 开发应用程序时,Spring 对应用程序本身的结构影响非常小。对领域模型可以做到零污染;对功能性组件也只需要使用几个简单的注解进行标记,完全不会破坏原有结构,反而能将组件结构进一步简化。这就使得基于 Spring Framework 开发应用程序时结构清晰、简洁优雅。
- 控制反转:IOC——Inversion of Control,翻转资源获取方向。把自己创建资源、向环境索取资源,变成环境将资源准备好,我们享受资源注入。
- 面向切面编程:AOP——Aspect Oriented Programming,在不修改源代码的基础上增强代码功能。
- 容器:Spring IOC 是一个容器,因为它包含并且管理组件对象的生命周期。组件享受到了容器化的管理,替程序员屏蔽了组件创建过程中的大量细节,极大的降低了使用门槛,大幅度提高了开发效率。
- 组件化:Spring 实现了使用简单的组件配置组合成一个复杂的应用。在 Spring 中可以使用 XML和 Java 注解组合这些对象。这使得我们可以基于一个个功能明确、边界清晰的组件有条不紊的搭建超大型复杂应用系统。
- 声明式:很多以前需要编写代码才能实现的功能,现在只需要声明需求即可由框架代为实现。
- 一站式:在 IOC 和 AOP 的基础上可以整合各种企业应用的开源框架和优秀的第三方类库。而且Spring 旗下的项目已经覆盖了广泛领域,很多方面的功能性需求可以在 Spring Framework 的基础上全部使用 Spring 来实现。
Spring Framework五大功能模块
功能模块 | 功能介绍 |
---|---|
Core Container | 核心容器,在 Spring 环境下使用任何功能都必须基于 IOC 容器。 |
AOP&Aspects | 面向切面编程 |
Testing | 提供了对 junit 或 TestNG 测试框架的整合。 |
Data Access/Integration | 提供了对数据访问/集成的功能。 |
Spring MVC | 提供了面向Web应用程序的集成功能。 |
Spring框架的主要模块包括:
- Spring Core:提供核心的依赖注入(DI)功能。
- Spring AOP:支持面向切面编程(AOP),允许在不修改代码的情况下添加行为。
- Spring MVC:用于构建基于Web的应用程序,提供了强大的MVC架构。
- Spring Data:简化了数据访问层的开发,支持多种数据存储技术。
- Spring Security:提供全面的安全功能,包括认证和授权。
- Spring Boot:简化了Spring应用程序的配置和部署,提供了开箱即用的默认设置。
特性功能
- 依赖注入(DI):通过依赖注入,Spring可以自动管理对象之间的依赖关系,减少了代码的耦合度。
- 面向切面编程(AOP):允许开发者在不修改业务逻辑代码的情况下,添加横切关注点(如日志记录、事务管理等)。
- 事务管理:Spring提供了声明式事务管理,简化了事务的处理。
- 数据访问:Spring Data模块支持多种数据存储技术(如JPA、MongoDB、Redis等),简化了数据访问层的开发。
- 集成测试:Spring提供了强大的测试支持,允许开发者轻松编写和运行集成测试。
- 模块化设计:Spring框架是模块化的,开发者可以根据需要选择使用不同的模块。
- Spring Boot:通过Spring Boot,开发者可以快速创建独立的、生产级的Spring应用程序,减少了配置的复杂性。
使用Spring的好处
- 简化开发:Spring的依赖注入和面向切面编程功能大大简化了开发过程,使代码更加简洁和易于维护。
- 提高生产力:Spring Boot提供了开箱即用的默认设置和自动配置,显著提高了开发效率。
- 可测试性:Spring框架提供了强大的测试支持,使得单元测试和集成测试更加容易。
- 灵活性和可扩展性:Spring的模块化设计和丰富的生态系统使得应用程序可以灵活地扩展和集成各种第三方库和服务。
- 社区支持:Spring拥有庞大的社区和丰富的文档资源,开发者可以轻松找到解决方案和最佳实践。
- 企业级功能:Spring提供了全面的企业级功能,如事务管理、安全、数据访问等,满足复杂业务需求。