《Spring技术内幕》——1.4节Spring的应用场景

简介: 本节书摘来自华章社区《Spring技术内幕》一书中的第1章,第1.4节Spring的应用场景,作者:计文柯,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.4 Spring的应用场景
通过介绍Spring架构设计,我们了解到Spring是一个轻量级的框架。在Spring这个一站式的应用平台或框架中,其中的各个模块除了依赖IoC容器和AOP之外,相互之间并没有很强的耦合性。Spring的最终目标是简化应用开发的编程模型。它所提供的服务,可以贯穿应用到整个软件中,从最上层的Web UI到底层的数据操作,到其他企业信息数据的集成,再到各种J2EE服务的使用,等等。这些企业应用服务,Spring都通过其特有的IoC容器和AOP模块实现。在实现过程中,Spring没有把这种复杂性转换成自己被使用的复杂性,这点无疑是成功的,同时大大拓宽了Spring的应用场景。一方面,我们可以把Spring作为一个整体来使用,另一方面,也可以各取所需,把Spring的各个模块拿出来独立使用,这取决于我们对Spring提供服务的具体需求。例如,这些需求可能来自一个完整的Java EE企业应用开发需求,可以仅使用Spring的某些模块,如IoC容器。再如,我们可以使用Spring集成其他的J2EE服务,如JavaMail、JMS、JNDI等,还可以在Android应用环境,甚至在.NET应用环境中使用Spring。使用Spring的时候,可以采用各种不同的方式,而对于这些方式的选择,完全是由应用来决定的。因而,在对Spring的使用中,我们看到应用很少依赖于Spring特有的API,同时,由于Spring本身的设计也是非常模块化的,这样,就为应用开发提供了EJB开发不曾提供的便利。
在Java EE企业应用开发中,我们了解了使用Spring最为基本的场景,也就是使用大家熟知的SSH架构来完成企业应用开发,从而取代传统的EJB开发模式。在SSH架构中,Struts作为Web UI层、Spring作为中间件平台、Hibernate作为数据持久化工具(ORM工具)来操作关系数据库。如果我们使用的是Apache Tomcat、MySQL数据库和Linux环境,这就是一个完整的使用开源软件搭建企业应用的典型案例,对于应用开发来说,这样的架构组合是非常有吸引力的,因为这个架构的使用基本上没有什么License的费用,而且利用其进行开发的人员众多,已经成为Java应用开发中的主流技术。在这个架构中,Hibernate是一个独立的ORM数据持久化产品,目前是JBOSS/RedHat产品组合的一员,是一款著名的Java开源软件产品,使用者众多。比较Spring JDBC和Hibernae对数据库操作的支持,对Spring来说,其对数据持久化的支持,虽然也有JDBC的封装,可以完成一些将简单的数据记录到Java数据对象的转换和映射工作,但和Hibernate相比,功能上毕竟还是有一些单薄,比如Hibernate还提供了各种数据的查询、方便的对象和关系数据的映射等。因此,在大多数应用中,将Hibernate和Spring一起使用是非常普遍的,因为一方面Hibernate提供了完整的和已经成为事实标准的ORM功能,另一方面,Spring也提供了与Hibernated的集成和封装,包括声明式事务处理的封装等。对于Web UI层而言,尽管Spring提供了自己的MVC实现,但与Struts的流行程度相比,这个Spring MVC的使用并不广泛,毕竟在Web开发领域,Struts成名更早。在这个架构组合中,Spring起到的是一个应用平台的作用,通过Spring的集成,可以让应用在直接部署在Tomcat这个Web服务器上 ,因为作为一个直接依赖JVM的轻量级框架,Spring的部署方式就是一个简单的jar包,不需要以一个J2EE应用服务器的形式出现,从而使整个应用在Tomcat这样的Web服务器上可以直接运行起来,非常简洁。同样地,如果我们在测试环境中使用Spring,还可以选择使用Jetty来提供Web服务,使用HSQLDB这样的由纯Java实现的数据库。这样的环境,不但可以为调试应用带来许多便利,还可以进一步体现Spring轻量级开发的特点。
同样,因为Spring的实现中,它的核心实现,比如IoC容器实现,是直接依赖JVM虚拟机的,也就是说,在Java环境中,Spring IoC容器是可以单独使用的,特别是在BeanFactory的基本实现中,包含在一个小小的jar包里面,可以直接在应用中引用。对于Spring而言,如果要在.NET环境下使用其提供的基本特性,Spring项目也提供了Spring .NET的实现;如果需要在Android移动平台中使用Spring的基本特性,Spring也有对Spring Android项目的支持。从这些应用场景上可以看出,因为Spring设计时的轻量级特性,以及推崇POJO开发,所以使用起来非常灵活。在对Spring的应用中,Spring团队为我们列举了Spring的价值,非常值得参考。

  • Spring是一个非侵入性(non-invasive)框架,其目标是使应用程序代码对框架的依赖最小化,应用代码可以在没有Spring或者其他容器的情况下运行。
  • Spring提供了一个一致的编程模型,使应用直接使用POJO开发,从而可以与运行环境(如应用服务器)隔离开来。
  • Spring推动应用的设计风格向面向对象及面向接口编程转变,提高了代码的重用性和可测试性。
  • Spring改进了体系结构的选择,虽然作为应用平台,Spring可以帮助我们选择不同的技术实现,比如从Hiberante切换到其他ORM工具,从Struts切换到Spring MVC,尽管我们通常不会这样做,但是我们在技术方案上选择使用Spring作为应用平台,Spring至少为我们提供了这种可能性和选择,从而降低了平台锁定的风险。
相关文章
|
1月前
|
传感器 Java API
Spring揭秘:Aware接口应用场景及实现原理!
Aware接口赋予了Bean更多自感知的能力,通过实现不同的Aware接口,Bean可以轻松地获取到Spring容器中的其他资源引用,像ApplicationContext、BeanFactory等。 这样不仅增强了Bean的功能,还提高了代码的可维护性和扩展性,从而让Spring的IoC容器变得更加强大和灵活。
120 0
Spring揭秘:Aware接口应用场景及实现原理!
|
3月前
|
XML Java 数据库连接
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
JAVAEE框架整合技术之spring03-SpringJdbcTemplate模板技术和事务处理
67 0
|
3月前
|
安全 Java 应用服务中间件
阿里技术官架构使用总结:Spring+MyBatis源码+Tomcat架构解析等
分享Java技术文以及学习经验也有一段时间了,实际上作为程序员,我们都清楚学习的重要性,毕竟时代在发展,互联网之下,稍有一些落后可能就会被淘汰掉,因此我们需要不断去审视自己,通过学习来让自己得到相应的提升。
|
1月前
|
存储 Java 数据处理
Spring揭秘:ClassPathScanningProvider接口应用场景及实现原理!
ClassPathScanningCandidateComponentProvider是Spring框架中一个非常核心的类,它主要用于在类路径下扫描并发现带有特定注解的组件,支持诸如@ComponentScan、@Component、@Service、@Repository和@Controller等注解的自动扫描和注册。
Spring揭秘:ClassPathScanningProvider接口应用场景及实现原理!
|
1月前
|
Java API 开发者
Spring揭秘:BeanDefinitionBuilder接口应用场景及实现原理!
BeanDefinitionBuilder类为Spring框架中的Bean定义提供了灵活且强大构建方式,通过API,开发者能够轻松创建和配置Bean,无需依赖繁琐的XML配置或注解。
Spring揭秘:BeanDefinitionBuilder接口应用场景及实现原理!
|
1月前
|
开发框架 前端开发 Java
Spring和Spring Boot:两者的区别与应用场景
Spring和Spring Boot:两者的区别与应用场景
48 1
|
1月前
|
Java API 对象存储
Spring揭秘:AnnotationMetadata接口应用场景及实现原理!
AnnotationMetadata接口可以轻松获取类、方法或字段上的注解信息,简化注解处理,提供一致且灵活的访问方式,支持运行时处理,让开发者能更专注于业务逻辑而非底层细节,从而加速开发进程。
Spring揭秘:AnnotationMetadata接口应用场景及实现原理!
|
1月前
|
存储 Java API
Spring揭秘:Environment接口应用场景及实现原理!
Environment接口提供了强大且灵活的环境属性管理能力,通过它,开发者能轻松地访问和配置应用程序运行时的各种属性,如系统属性、环境变量等。 同时,Environment接口还支持属性源的定制和扩展,使得开发者能根据实际需求灵活地定制属性的加载和解析方式。
Spring揭秘:Environment接口应用场景及实现原理!
|
1月前
|
XML Java API
Spring揭秘:ApplicationContextAware应用场景及实现原理!
ApplicationContextAware接口能够轻松感知并在Spring中获取应用上下文,进而访问容器中的其他Bean和资源,这增强了组件间的解耦,了代码的灵活性和可扩展性,是Spring框架中实现高级功能的关键接口之一。
Spring揭秘:ApplicationContextAware应用场景及实现原理!
|
1月前
|
存储 Java 开发者
Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!
BeanDefinitionRegistry接口提供了灵活且强大的Bean定义管理能力,通过该接口,开发者可以动态地注册、检索和移除Bean定义,使得Spring容器在应对复杂应用场景时更加游刃有余,增强了Spring容器的可扩展性和动态性,为开发者带来了更大的灵活性和控制力。
Spring揭秘:BeanDefinitionRegistry应用场景及实现原理!