Spring框架简介
Spring框架是Spring技术栈的核心,它实现了对bean的依赖管理和AOP的编程方式,降低了代码的耦合度,极大提升了编程效率,是很好的一站式构建企业级应用的轻量级解决方案。
模块化的spring架构
Spring框架是模块化的,开发人员可以自由选择所需部分。Spring框架支持声明式事务管理,通过RMI或WEB服务远程访问用户的逻辑,并支持多种选择来持久化用户数据。它提供了全功能的Spring MVC及Spring WebFlux框架,也支持AOP集成到软件中。
spring的优点
Spring框架是一个轻量级的Java平台,可以提供完整的基础设施来支持开发Java应用程序。它负责基础设施功能,让开发者可以更专注于业务逻辑的开发。
本地Java方法可以执行数据库事务,无须自己处理事务API;
本地Java方法可以执行远程过程,无须自己处理远程API;
本地Java方法可以成为HTTP端点,无须自己处理servlet API;
本地Java方法可以拥有管理操作,无须自己处理JMX API;
本地Java方法可以执行消息处理,无须自己处理JMS API;
IOC
Java平台提供了丰富的应用程序开发功能,但它缺乏组织基本构建模块成为一个完成系统的方法。开发者可以使用各种设计模式,如Factory、Abstract Factory、Builder、Decorator等模式来组合各种类和对象实例构建应用程序。虽然这些模式可以解决对应的问题,但带来的问题是使用它的技术门槛比较高,否则难以在应用程序中有效的使用它。
Spring框架的IOC组件通过提供正规化的方法来组合不同的组件,使它们成为一个完整可用的应用。Spring框架将规范化的设计模式作为一等对象,方便开发者将其集成到自己的应用程序中。开发人员无须手动处理对象间的依赖关系,全部交给Spring容器去管理,大大提升了开发体验。
Spring框架常用模块
Spring框架包含了20多种模块,涵盖了企业级开发的各个方面。模块如下:
spring-aop、spring-orm、spring-context-support、spring-webmvc、spring-jdbc、spring-beans-groovy、spring-tx、spring-messaging、spring-context-indexer、spring-webflux、spring-jcl、spring-beans、spring-test、spring-expression、spring-context、spring-web、spring-instrument、spring-aspects、spring-oxm、spring-core、spring-websocket、spring-jms、spring-framework-bom。
七大核心模块1、核心容器
核心容器(Core Container)由spring-core、spring-beans、spring-context、spring-context-support、spring-expression模块组成。
spring-core和spring-beans模块是框架的基本部分,包括了IOC和DI功能。BeanFactory是一个复杂工厂模式的实现,无须编程就能实现单例,允许开发人员将配置和特定依赖从实际程序逻辑中解耦。
spring-context模块是建立在Core和Beans模块提供的功能基础之上的,它是一种在框架类型下实现对象存储操作的手段。它继承了Beans模块的特性,并增加了对国际化的支持、事件广播、资源加载和创建上下文,也支持如EJB、JMX和基础远程访问的J2EE特性。ApplicationContext接口是Context模块的主要表现形式。
spring-context-support模块提供了对常见的第三方库的支持,以便集成到spring应用上下文,如缓存(EhCache、JCache)和调度(CommonJ、Quartz)等。
spring-expression模块提供了一种强大的表达式语言,用来在运行时查询和操作对象图。它是对JSP2.1规范所指定的统一表达式语言的一种扩展,这种语言支持对属性值、属性参数、方法调用、数组内容存储、收集器和索引、逻辑和算数的操作机命名变量,并通过名称从spring控制反转容器中获取对象。
2、AOP(面向切面编程)和Instrumentation
spring-aop模块提供AOP的实现,可以实现方法拦截器和切入点完全分离代码。
spring-aspects模块提供了集成使用AspectJ的功能,spring-instrument模块提供了类instrumentation的支持和在某些应用服务器使用类加载器实现。spring-instrument-tomcat用于Tomcat Instrumentation代理。
3、消息
spring4版本开始提供了spring-messaging模块,包含了Message、MessageChannel、MessageHandler及其他用来提供基于消息的基础服务。此外还包含一组消息映射方法的注解,类似Spring MVC的注解。
4、数据集成与访问
数据访问/集成层(Data Access/Integration)由JDBC、ORM、OXM、JMS和Transaction模块组成。
spring-jdbc模块提供了一个JDBC抽象层,让开发者避免进行繁琐的JDBC编码和解析数据库供应商特定的错误代码。
spring-tx模块支持用于实现特殊接口和所有POJO类的编程及声明式事务管理。
spring-orm模块为对象关系映射API集成层,包括JPA和Hibernate。它可以将OR映射框架与spring提供的其他功能结合实现。
spring-oxm模块提供了一个支持object/XML映射实现的抽象层,如JAXB。Castor、JiBX和XStream。
spring-jms模块包含用于生成和使用消息的功能,从4.1版本开始提供了与spring-messaging的集成。
5、Web
Web层由spring-web、spring-webmvc、spring-websocket、spring-webflux组成。
spring-web模块提供了基本的面向web开发的集成功能,如文件上传、用于初始化IOC容器的servlet监听、web程序上下文等。它包含了HTTP客户端及web相关的spring远程访问的支持。
spring-webmvc模块包含spring的MVC和REST服务功能。
spring-websocket模块是基于websocket协议通信的程序开发。
spring-webflux模块是spring5新增加的支持响应式编程的web开发框架。
6、测试
spring-test模块支持通过组合JUnit或TestNG来实现单元测试和集成测试功能。它提供了Srping ApplicationContexts的持续加载并缓存这些上下文,还提供了用于孤立测试代码的模拟对象(mock objects)。
--参考文献《Srping5开发大全》