Spring boot系列1 - Spring boot简介

在学习一门技术时,我喜欢先对这门技术有个大体的了解,这可能包括这门技术的来龙去脉、主要研究什么、主要解决哪些问题、主要用途有哪些、发展趋势、它的优势和缺点以及它的主要思想和采用的主要方法等。这样,我便能对这门技术有一个比较全面的认识,以免管中窥豹,只见一斑。然后再找上一本好书从头学起,看一点理论,鼓捣几个例子,以加深对原理的理解,同时也不至于枯燥乏味。最后再回过头来总结知识,归纳一些所谓的最佳实践以指导后续的使用。没有理论的指导容易抓瞎,难以走得远;而没有实践的体会便容易盲从,以致肤浅。循着这个思路,我开始了Spring boot之旅。

Spring boot是什么

我们先来看下Spring boot的庐山真面目,它是一个基于Spring的开发框架,其目的是让我们能够方便、快速的开发基于Spring的项目。通过使用Spring boot,我们可以轻松的管理项目所需要的依赖包、同时只需要很少的配置便可以创建能够独立运行的Spring项目。
不难看出,Spring boot并不是一个独立的框架,它站在Spring这个巨人的肩上。它一路披荆斩棘,为我们铺就了通往Spring项目开发的坦途。那么,它到底征服了哪些怪兽,从而捕获了程序员的芳心呢,让我们一探究竟。

Spring boot解决的主要问题

在用spring开发web项目时,我大体上是这么做的

  1. 创建一个新的web项目,组织好项目的基本目录结构。
  2. 确定项目依赖的基本jar包,在maven的pom.xml文件中引入这些jar包,同时保证它们之间是相互兼容的。
  3. 找到以前的项目,从中拷贝一大堆基础配置,然后粘贴到新项目中,包括web、数据库、安全等等相关的配置。
  4. 编写代码,用maven把项目打包成war包,或者在IDE中配置tomcat,然后运行项目。

每次开发新项目时,我总是不断的重复着这些繁琐而必要的工作,直到spring boot的出现。spring boot解决了spring项目开发过程中的常见问题,这主要体现在如下几个方面。

依赖管理

在Spring boot出现之前,在开发Spring项目时,我需要在pom.xml文件中指定它所依赖的包和相应的版本号,并且保证如下几点才能使得项目顺利运行:

  • 确定项目依赖的包
  • 指定包的版本号
  • 保证所有的包之间相互兼容。

这些工作耗时费力而且容易出错,大量的依赖和传递依赖问题常常令我头疼不已。Spring boot的出现彻底解决了这个问题,我们只需要告诉它需要什么样的功能,例如web、缓存、jdbc数据源等,它便会自动帮我们管理好依赖的包并保证兼容性。

自动化配置

在开发Spring项目时,我们总要先进行一大堆基础配置(主要是各种bean对象),虽然这些配置和具体的业务毫无关系。这些配置在不同的项目中反复出现,还长的十分相似。这大大伤害了我们程序员的自尊,我们都是有偷懒情怀的,况且"不要重复你自己"也是我们一直奉为圭臬的。举个例子就非常清楚了,要开发web项目,便要配置DispatcherServlet、ContextLoaderListener等等; 要使用MySQL数据库,便要配置DataSource、TrasanctionManager等等。这可不是我们程序员乐意干的事情,其实我只是想说我要开发一个Web项目,我要用MySQL数据库,其他的跟我没有什么关系,这十分类似于声明式编程,我只想说要什么,具体怎么干你看着办吧。用了这么多年的Spring,早已被这些配置搞的焦头烂额,况且除了复制粘贴练的极其娴熟外,也并没有其他的好处。终于,Spring boot来拯救我们了,它通过引入自动化配置的方式,使得我们不需要或者只需要很少的配置便可以快速的开发我们的项目。这确实是我们程序员的福音,具体它是怎么做的,留待后文分解。

独立运行

作为历经沧桑的程序员,我们非常熟悉传统的web项目的开发方式,修改代码 -> 打成war包 -> 部署到web容器 -> 重启web容器 …,如此日复一日的循环往复。Spring boot却另辟蹊径,改变了这种我们习以为常的模式,我们只需要修改代码、运行程序便可。Spring boot项目可以直接运行或者打包成单独的一个jar包运行,其中内置了web容器,如果加上IDE的热部署功能,甚至可以直接修改代码,立即便能看到效果。这不只方便了我们的日常开发,对于微服务更是意义深远。

Spring boot的核心功能

Spring boot带给我们的远远不止上面这些,它给与的比我们期望的更多。
其中包括:

  • 基于starter的依赖管理 - 使你轻松的管理项目依赖
  • 自动化配置 - 把繁琐的基础配置消弭于无形
  • 可独立运行 - 大大提高开发效率
  • 各种外部化配置 - 提供了各种灵活的配置方式
  • Spring boot cli
  • Actuator - 极大的方便了对程序的监控

既然每一个都如此重要,值得我们花费独立的篇幅去讲述,这儿也只是提上一提,留待后文详述。

一个例子: Rest风格的Hello world

各种语言框架都很喜欢Hello world,这个友好而且我们都十分熟悉的例子,我们也不想免俗,一个Hello world虽然不能让我们充分领略Spring boot的风采,却能让我们切实体验到spring boot的强大威力。这儿,我们给出一个基于Rest风格的返回Hello world的hello项目,关于这个例子说明如下几点:

  • 首先,它是一个Web项目。
  • 其次,它是基于Rest风格的,当你访问它时,返回的是一个字符串,而不是通常看到的网页。
  • 最后,我们是直接运行这个程序的,没有打成war包的形式,也没有配置单独的web容器。
Hello world项目的开发步骤
  1. 通过Spring Initializr创建Spring boot项目hello
  2. 编写HelloWorldController,返回"Hello world"字符串
  3. 运行程序

创建项目
可以使用多种方式创建Spring boot项目,例如通过 https://start.spring.io/, 使用Spring boot CLI命令行工具,使用各种IDE,这儿以IDEA为例。
File -> New -> Project,项目类型选择Spring Initializr。点击下一步(Next)。
在这里插入图片描述
在这里插入图片描述
Group我们填入com.dot,Artifact填写hello, Version 1.0,其他保持不变,点击下一步
在这里插入图片描述
选择web -> Spring Web,点击下一步。
在这里插入图片描述
直接点击Finish,稍等片刻。IDEA会自动生成一个名字叫做hello的项目,其中包含了项目所需的最基本的文件结构。结果如下:
在这里插入图片描述
其实不需要编写任何代码,我们已经有了一个完全可以运行的Spring boot项目,我们只需要打开HelloApplication类,然后点击右键选择Run HelloApplication,
便可以直接运行,此时会启动一个Tomcat服务器,监听端口为8080,但因为我们什么也没有做,当通过浏览器访问http://localhost:8080时,得到的只是一个
简单的错误页面。
在这里插入图片描述
下面我们开始编写一点代码,让它返回"Hello world"字符串,在com.dot.hello包中新建一个web包,然后在web包中新建一个Java类HelloController并编写如下代码:
在这里插入图片描述
在这里插入图片描述
然后重新运行程序便可以通过浏览器访问 http://localhost:8080/hello,如果一切顺利,我们便可以看到熟悉的Hello world了。寥寥几行代码便可以开发一个
完整的web项目,相比于传统的Spring开发那种纷繁复杂的配置,确实令人惊艳,虽然其功能十分简单,也足以让人叹为观止了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值