什么是Spring
Spring已经可以说是一个历史悠久的框架了,以下是有关spring的百度百科介绍,一些概念性的内容我就不再复述了,具体可以点击Spring。就目前的java开发环境来说,Spring更像是成为一种规范和标准,后续一些其他开发框架例如SpringBoot和Spring Cloud,这些都是在Spring的基础上进行了更高级别的探索。因此作为一个合格的Java开发者,是应该要对该框架有一定的了解的。
为什么要用Spring
Spring在日常的开发中被大量运用于服务端开发,本人也是一个服务端开发的工作者,因此仅从服务端开发方面进行探讨。首先一个简单的问题没有Spring我们能不能做服务端的开发?
答案是可以的,就算没有Spring我们依然能够开发网站,完成业务逻辑的编写,通过特定请求展现预先设置好的页面。我们在使用Servlet不就是这样的吗,仅仅需要配置好一些Servlet,我们的主机就可以处理各种请求。那么Spring给我们带来了哪些好处?框架的使用不就是为了解放我们的部分工作么,那么Spring到底解决了哪些方面的工作呢?那么我就主要从以下几个小点讲一讲Spring的好处。
装配
可能我们刚使用Spring的第一步就是导入一些架包,然后通过一个xml配置一个简单的bean,最后再通过一个奇奇怪怪的类获取一个实例,最后调用以下实例的方法,例如。
// 定义Spring配置文件的路径
String xmlSavedPath = "applicationContext.xml";
// 初始化Spring容器,加载配置文件
ApplicationContext applicationContext = new ClassPathXmlApplicationContext(
xmlSavedPath);
// 通过容器获取humanDao实例
HumanDao humanDao = (HumanDao) applicationContext.getBean("humanDao");
// 调用 humanDao 的 xx方法
humanDao.xx();
以上可能就是一个Spring的经典的入门小程序片段,当然您现在无需看懂具体的代码,只需要看一下注释即可。简单来说,我们通过某种方式将类信息交给Spring容器并将其标记,后续Spring容器在私底下默默创建好类的实例,然后我们通过之前标记的信息从Spring容器中拿回我们想要的类的实例。看起来并没有什么神奇,但是当大量类中包含其他类相关信息的时候,如何向类中完成注入就是一件非常麻烦的事情。并且当我们把实例注入时,程序使用者也无需关心实例的状态。使用者只需要关心实例的具体使用而无需关心实例的创建以及管理。
AOP概念
AOP的内容就是面向切面编程,这里简单讲述一下我个人的浅显理解。还是以一个例子进行举例吧,这样方便说明。比如我们在建筑房子时,当房子处于具体施工阶段时任何人都能进出,包括各种水电工和泥瓦工。当整个房子建筑完成之后需要进行交付了,这时候就需要对出入权限进行管理。毕竟这个时候房子属于某个人的私有住宅,其他人不应该未经同意下进入房子。这时就需要对房子添加防盗门,而具体的钥匙也只能保存在房子拥有者或者其信赖的人。当一个人想要进入房间时,首先需要判断其是否具有钥匙,如果没有则不会允许进入房间。回到程序上,当我们在调用某个方法之前需要一些额外的操作,例如验证权限或者对调用过程进行记录,这时就可以在不改变原始代码情况下通过使用AOP改变方法的具体执行过程(其中涉及大量的动态代理技术,这里仅仅具体而不是深入分析源码)。
其他技术的集成
Spring通常是作为一个管家而不是命令者,可以说Spring更像是一块带有默认配置的电脑主板。我们在后续的使用中可以通过对任意部件的替换来达到我们对程序的高级需求。例如一个程序可能需要使用其他日志系统,那么程序也仅仅需要引入不同的架包然后通过一个简单的配置即可完成日志系统的替换。包括在使用MySQL数据库时,在程序开发时我们也不必一遍又一遍的重复写数据库的连接、提交和关闭等重复代码,仅需要使用特定类然后配置数据库信息即可完成对数据库的一系列操作。结果就是开发者从繁杂重复的逻辑中解放,可以更加关系程序本身的逻辑。
Spring的发展
Spring强大之处就是对其他技术的完美集成,高扩展性能和方便的使用也是该框架20年屹立不倒的原因,或者说它是一种优秀的集成框架,它本身能做的事情很少但是能够近乎完美的将先进的技术融于自身。为了方便Spring的使用,SpringBoot的开发方式又极大地简便了开发过程,减少了大量的配置过程,通过使用默认配置来最快的完成开发过程。一个好的框架本身就是应该让开发者专注于开发过程本身,而不是被困于各种复杂重复的工作,SpringBoot在这一方面做的非常出色。现在主流的微服务技术中Spring也在其中扮演了核心的角色。
其它
接下来会写一些Spring使用的基础教程,初学者或者想了解Spring框架的人可以作为启蒙阅读使用。