spring相关SpringJava入门知识学习

「Java学习」Spring框架简介

2017-02-09  本文已影响6330人  斜杠时光

新的一年伊始,由于公司内部组织架构调整,本来是做Android方面开发的,近来要转做下发接口开发,不可避免就要去学习Java服务端开发。不能因为不是自己想做的岗位,就跳槽换工作吧,要适应变化,况且现在外面Android岗位面临饱和,倒是招聘Java程序员的需求一直没变,同时,程序员强大的学习能力此刻就能体现出来,熟悉下服务端的开发框架和流程,不管最新的技术如何演变,经典得始终是不变的,况且IOC和AOP一直是经典中的经典。因为要学习,就需要记录、沉淀、积累,所以就以写笔记的方式来见证学习的成长。

那么这篇文章主要介绍的是Spring整体框架,你要学习的内容,刚开始肯定要有一个大局观,要有一个整体的概念,我学的是什么,有什么作用,能给我带来什么,帮助我做什么,它背后实现的原理又是如何,这样才能在用的时候知其然而所以然。

那么就从以下几个方面开始介绍:

Spring是什么

从官网文档看:

The Spring Framework is a lightweight solution and a potential one-stop-shop for building your enterprise-ready applications. However, Spring is modular, allowing you to use only those parts that you need, without having to bring in the rest. You can use the IoC container, with any web framework on top, but you can also use only theHibernate integration code or the JDBC abstraction layer. The Spring Framework supports declarative transaction management, remote access to your logic through RMI or web services, and various options for persisting your data. It offers a full-featured MVC framework, and enables you to integrate AOP transparently into your software.

Spring is designed to be non-intrusive, meaning that your domain logic code generally has no dependencies on the framework itself. In your integration layer (such as the data access layer), some dependencies on the data access technology and the Spring libraries will exist. However, it should be easy to isolate these dependencies from the rest of your code base.

一句话,Spring是一个开发应用框架,什么样的框架呢,有这么几个标签:轻量级非侵入式一站式模块化,其目的是用于简化企业级应用程序开发。我们知道应用程序是由一组相互协作的对象组成,而在传统应用程序开发中,一个完整的应用是由一组相互协作的对象组成。所以开发一个应用除了要开发业务逻辑之外,最多的是关注如何使这些对象协作来完成所需功能,而且要低耦合、高内聚。业务逻辑开发是不可避免的,那如果有个框架出来帮我们来创建对象及管理这些对象之间的依赖关系。当然,我们也可以通过自我能力,利用前人总结出来的设计模式来进行我们的架构设计,比如常见的「工厂模式」、「代理模式」等,总共有23种模式,利用别人总结的轮子来进行我们自己轮子建造,但如何这些轮子建造专门交给一个叫做Spring的人去帮你做,你只需要专心你的业务逻辑,是不是省心很多,同时这个叫Spring干的又专业又稳定,何乐而不为呢。

从这里我们可以认为Spring是一个超级粘合平台,除了自己提供功能外,还提供粘合其他技术和框架的能力,从而使我们可以更自由的选择到底使用什么技术进行开发。

Spring带来了什么

Spring除了不能帮我们写业务逻辑,却能帮助我们简化开发,有以下几点:

  1. Spring能帮我们根据配置文件创建及组装对象之间的依赖关系。
  2. Spring面向切面编程能帮助我们无耦合的实现日志记录,性能统计,安全控制。
  3. Spring能非常简单的帮我们管理数据库事务。
  4. Spring还提供了与第三方数据访问框架(如Hibernate、JPA)无缝集成,而且自己也提供了一套JDBC访问模板,来方便数据库访问。
  5. Spring还提供与第三方Web(如Struts、JSF)框架无缝集成,而且自己也提供了一套Spring MVC框架,来方便web层搭建。
  6. Spring能方便的与Java EE(如Java Mail、任务调度)整合,与更多技术整合(比如缓存框架)。

Spring有什么好处

在看Spring的好处之前,先来理解以下几个专业名词:

那么用Spring框架到底有什么好处呢?好处如下:

Spring结构图

spring概述图

从中可以看到Spring Framework差不多有20个模块组成,这些模块分为核心容器,数据访问/集成,Web,AOP(面向方面的编程),Instrumentation,消息传递和测试,如上图所示。

Core Container模块,包含spring-beans、spring-core、spring-context、spring-expression四个方面。

AOP and Instrumentation模块,包含spring-aop、spring-instrument两个方面。

Messaging,从Spring Framework 4开始集成了MessageChannel, MessageHandler等,用于消息传递的基础。

Data Access/Integration,包括了JDBC、ORM、OXM、JMS和事务管理。

事务模块:该模块用于Spring管理事务,只要是Spring管理对象都能得到Spring管理事务的好处,无需在代码中进行事务控制了,而且支持编程和声明性的事物管理。

spring-jdbc: 提供了一个JBDC的样例模板,使用这些模板能消除传统冗长的JDBC编码还有必须的事务控制,而且能享受到Spring管理事务的好处。

spring-orm: 提供与流行的“对象-关系”映射框架的无缝集成,包括Hibernate、JPA、Ibatiss等。而且可以使用Spring事务管理,无需额外控制事务。

spring-oxm: 提供了一个对Object/XML映射实现,将java对象映射成XML数据,或者将XML数据映射成java对象,Object/XML映射实现包括JAXB、Castor、XMLBeans和XStream。

spring-jms: 用于JMS(Java Messaging Service),提供一套 “消息生产者、消息消费者”模板用于更加简单的使用JMS,JMS用于用于在两个应用程序之间,或分布式系统中发送消息,进行异步通信。

Web,包含了spring-web, spring-webmvc, spring-websocket, and spring-webmvc-portlet几个模块。

spring-web 提供了基础的web功能。例如多文件上传、集成IoC容器、远程过程访问(RMI、Hessian、Burlap)以及Web Service支持,并提供一个RestTemplate类来提供方便的Restful services访问。

spring-webmvc: 提供了一个Spring MVC Web框架和REST Web服务的实现。Spring的MVC框架提供了领域模型代码和Web表单之间分离,并与Spring框架的所有其他功能集成。

spring-webmvc-portlet: 提供了在Portlet环境中使用MVC实现,并且反映了spring-webmvc模块的功能。

Spring应用场景

典型Web应用程序应用场景

典型应用

Spring的声明式事务管理功能让web应用程序完全是事务性的,就像如果你使用EJB容器管理的事务。你所有的自定义的业务逻辑可以通过简单的pojo实现和由Spring的IoC容器。服务包括支持发送电子邮件和web层的独立验证,可以让你选择在哪里执行验证规则。

远程访问应用场景

远程服务

Spring能非常方便的提供暴露RMI服务,远程访问服务如Hessian、Burlap等,实现非常简单只需通过在Spring中配置相应的地址及需要暴露的服务即可轻松实现。

小结

首先要明确Spring是个什么东西,能帮我们做些什么事情,知道了这些然后做个简单的例子,这样就基本知道怎么使用Spring了。Spring核心是IoC容器,所以一定要透彻理解什么是IoC容器,以及如何配置及使用容器,其他所有技术都是基于容器实现的;理解好IoC后,接下来是面向切面编程,首先还是明确概念,基本配置,最后是实现原理,接下来就是数据库事务管理,其实Spring管理事务是通过面向切面编程实现的,所以基础很重要,IoC容器和面向切面编程搞定后,其余都是基于这俩东西的实现,学起来就更加轻松了。要学好Spring不能急,一定要把基础打牢,基础牢固了,这就是磨刀不误砍柴工。

参考地址:

  1. https://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#spring-introduction
  2. http://sishuok.com/forum/blogPost/list/2426.html#7018
上一篇下一篇

猜你喜欢

热点阅读