Spring boot项目收获总结(1)
目前在做一个简单的体育赛事资讯展示的项目,我主要负责后端,向安卓端和Web管理端提供RESTful的接口,主要使用的技术是spring boot。这是我第一次使用spring boot搭建后端,实践永远是学习计算机知识最好的方式,这次项目也让我学到了很多spring boot的知识,因此准备用一个系列的博客进行记录。当然我对spring boot的理解还很粗浅,可能更多的介绍会关注于怎么使用这个框架,而不是框架背后的原理。当然我也会写一些关于框架原理的体会,但仅仅是体会而已,毕竟我还没有那个水平从源码或设计思路上去进行理解。
另外就是我没有使用过spring boot模板相关的技术,因为习惯于前后端分离,更喜欢用React等框架去写前端。因此,这一系列的博客只会关注使用spring boot建立RESTful服务的部分。
Spring Boot的简单介绍
这里只是我的一次实践中的对框架的理解,更详细的介绍还请大家去官网阅读。
Spring Boot是在Spring的基础上发展而来的一个框架,最主要的特点是采用了“约定大于配置”的方式。这是什么意思呢?过去,如果我们想用Spring来搭建一个后端,那么起步就是一个很困难的过程,因为在一开始我们就要进行大量的配置,从而拉高了Spring的学习门槛。Spring Boot对此的改进方式是:由框架按照大多数的习惯进行默认配置,当我们遇到问题时,再去写相应的配置去覆盖默认的配置,即约定大于配置。这极大的降低了新手使用框架的门槛,在spring boot中建立最简单的服务只需要几行代码。
首先是启动类:
1 |
|
事实上这一个启动类通常在初始化项目时会自动生成,作为新手也完全没必要一开始去理解其含义。
接下来就是你的RESTful接口,这里举例要返回一个hello world的字符串。
1 |
|
这样,最简单的接口已经做好了,只要访问/hello(本地运行的话是localhost的8080端口),就可以收到hello world的字符串,相当简单。
spring boot的另一个好处是使用“starter”进行了依赖和版本管理。当你需要使用一个组件,比如spring data,你只需要在maven中引入一个spring data的starter的依赖,并选择一个版本,就会引入该版本对应的所有spring data相关的包,你不需要担心某个包的版本会不会和其他的不兼容。
当然,spring boot还有其他的优点,比如和微服务相关,由于我还没有具体接触过,就不多说了。
Spring的简单介绍
spring是一个无比庞大的生态,按我粗浅的理解,它可能已经不能称为框架了,更像是框架的框架。提到spring,就难以跳过它的两个重要特性,控制反转(IOC)和面向切片编程(AOP)。对AOP我还没有太深入的理解,这里只谈一下对IOC的理解。
控制反转
控制反转,或者另一个常用来描述这个特性的词语——依赖注入,初看起来非常高深,但它的思想其实是非常简单的。
通常我们在写Java代码时,难以避免类的相互引用,即在一个类中new另一个类。因为这样就建立了两个类之间的依赖,或者说耦合,我们对一个类的修改或替换,很可能会以意想不到的方式影响其他的类,这对于系统的可扩展性和可维护性是非常不利的。当然,在面向对象中,我们有接口,以及数不清的优秀的设计模式来帮我们设计低耦合的代码,而spring则以另外一种完全不同的方式给出了这个难题的一种解决方式,即控制反转。
在spring中,我们写的类,不管是配置类,还是模型类,都不是由我们本身创建,即我们不需要在代码中new自己写的类。我们的类在用spring相关的注解标注后,会统一由框架的IOC容器进行管理(控制反转,简单理解就是我们不再控制自己写的类),在需要使用的地方,由框架自动进行实例化(依赖注入)。
Original author: 马旭
Original link: https://bhmaxu.github.io/2020/05/15/Spring-boot项目收获总结(1)/
Copyright Notice: Please indicate the source of the reprint (must retain the author's signature and link)