写在前面
鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的博文初步都定下来包括SpringBoot介绍、入门、配置、日志相关、web开发、数据访问、结合docker、缓存、消息队列、检索、任务安全、分布式等等一系列的博文,工作量很大,是个漫长的过程,每一步我都尽量详细,配上截图说明,也希望对看的同学真的有用。
单纯就是想分享技术博文,还想说一句就是,如果觉得有用,请点个关注、给个赞吧,也算对我来说是个宽慰,毕竟也得掉不少头发,嘿嘿嘿
系列文章传送条
详细SpringBoot教程之入门(一)
详细SpringBoot教程之入门(二)
详细SpringBoot教程之配置文件(一)
详细SpringBoot教程之配置文件(二)
详细SpringBoot教程之日志框架
详细SpringBoot教程之Web开发(一)
详细SpringBoot教程之Web开发(二)
详细SpringBoot教程之Web开发(三)
详细SpringBoot教程之数据访问
详细SpringBoot教程之启动配置原理
详细SpringBoot教程之缓存开发
SpringBoot介绍
先通过来一些概念,会让我们对技术有着更加清晰的理解。J2EE笨重的开发、繁多的配置、低下的开发效率、复杂的部署流程、第三方技术集成难度大,如果开发过SpringMVC或者单纯使用过SSH、SSM框架的同学,肯定是体验过被很多配置文件支配的恐惧,很难受吧,不过不用担心,我们有了SpringBoot。Spring Boot用来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用。随着Spring全家桶时代的到来,SpringBoot给我们带来了J2EE一站式解决方案,SpringCloud给我们带来了分布式整体解决方案。从此我们可以使用 SpringBoot 快速的开发基于 Spring 框架的项目,由于围绕 SpringBoot 存在很多开箱即用的 Starter 依赖,使得我们在开发业务代码时能够非常方便的、不需要过多关注框架的配置,而只需要关注业务即可。
SpringBoot优点
- 快速创建独立运行的Spring项目以及与主流框架集成
- 使用嵌入式的Servlet容器,应用无需打成WAR包
- starters自动依赖与版本控制
- 大量的自动配置,简化开发,也可以修改默认值
- 无需配置XML,无代码生成,开箱即用
- 准生产环境的运行时应用监控
- 与云计算的天然集成
看到SpringBoot这么多优点,是不是很想立刻上手呢,先不急。这里还是要提一下的,SpringBoot入门很容易,不过想要精通还是有难度的,因为毕竟自动化帮我们把Spring全家桶集成的这么好,我们想要深入精通的话,必须要了解Spring全家桶的技术,当然难呀,不过既然好上手,我们完全可以先学会怎么使用,然后后面熟练了再去研究底层代码原理,这样才有那种豁然开让的感觉。
微服务
说到SpringBoot,就不得不提一下微服务,微服务是一种架构风格,可以理解成小型服务,这些服务通过HTTP的方式进行互通。微服务并没有一个官方的定义,想要直接描述微服务比较困难,我们可以通过对比传统WEB应用,来理解什么是微服务,传统的应用成为“单体应用”
单体应用就是那种,核心分为业务逻辑、适配器以及API或通过UI访问的WEB界面。业务逻辑定义业务流程、业务规则以及领域实体。适配器包括数据库访问组件、消息组件以及访问接口等,所有的这些东西都集成在一起,看着很强大,其实很乱。
而微服务架构有很多重要的优点,它解决的就是复杂性问题。它将单体应用分解为一组服务。虽然功能总量不变,但应用程序已被分解为可管理的模块或服务。这些服务定义了明确的RPC或消息驱动的API边界。微服务架构强化了应用模块化的水平,而这通过单体代码库很难实现。因此,微服务开发的速度要快很多,更容易理解和维护。
实现一个HelloWord应用
说了这么多SprigBoot多好多好,不直接上手一个简单的项目说不过去,那我们就来创建运行一个HelloWord应用,体验一些从创建到访问http://localhost:8080/hello有多么的简单,你就会意识到原先的SpringMVC以及SSH什么的有多么繁琐。
这里说一下,我们先上手一个简单的应用,然后我会基于这个简单的应用说明一些SpringBoot的配置和使用,正所谓先要尝到甜头,才有学习的动力嘛,废话不多说,上手。
环境说明
环境啥的其实,也不用多说,因为和我使用的不同版本其实也不会有太大影响,只是可能一些问题是因为版本引起的。
- JDK1.8:1.8的版本很好用,目前大部分公司生产环境的项目也都是1.8
- SpringBoot1.7以上:我这里使用的SpringBoot2.2.4
- Maven3.3以上:我这里使用的是3.5.4
- IDE使用的Idea(用eclipse也可以,不过我使用的是Idea演示)
这里特别说明一下的是Maven,我们如果使用Idea内置的Maven也可以,不过我喜欢用自己想要的版本,所以就自己给Idea配置我想要的Maven版本,而且还能学到东西,Maven也是我们必须要了解的一项工具。
我使用的是Idea2018,里面内置的Maven是3.3的,我自己改成了3.5,Maven的下载和安装看我另一篇带你了解Maven,并搞定安装和配置
安装好了Maven以后,记得把Maven默认的JDK改成1.8,就是在Maven的安装位置的conf文件夹中,打开setting.xml,在
为了方便,我就直接把内容粘贴出来,你们就不用一个一个打了,如下
1 | <profile> |
完成了上述操作之后,现在我教你用Idea配置自己的Maven,具体操作如下图:
选择好了之后,点击Apply就可以了。
实现功能
一个功能,浏览器发送hello请求,服务器接受请求并处理,相应HelloWorld字符串
具体步骤
首先我们使用Idea创建Maven工程
然后点击Finish就创建成功了,我们的Maven项目也就创建好了,这里要提一下,我们刚创建Maven项目的时候,Idea给我的一些Tip,我们把这个勾选了,以后我们修改pom.xml的时候,就会自动帮我们加载依赖了。
当然啦,如果你没有对Maven进行生命配置的话,你会发现Maven加载相关依赖的时候非常的慢,因为Maven中央库在国外,所以自然比较慢,我们可以配置Maven为阿里源,这里就快很多了,具体操作看我另一篇文章带你了解Maven,并搞定安装和配置,里面有讲解如何配置阿里源
导入依赖SpringBoot相关的依赖
接下来,我们来使用pom加载相关依赖,加载我们的SpringBoot项目,那我们应该是用什么依赖呢,哈哈,不要慌,这里我教你怎么使用官网的例子,首先打开Spring官网,然后我们根据我们需要的相关版本,进行勾选生成即可,SpringBoot的版本一般选择最新的release版本就可以了,具体如下图
然后我们就可以把生成的pom.xml依赖拷贝到我们项目的pom.xml里面,注意了,不要全部拷贝,基本把我圈出来的换成你自己的,如下图
到这里我们就加载完成了一个SpringBoot项目吧,是不是很简单,不过你可能会说,我加载SpringMVC之类的也很简单,不过不要急,我们接着编写一个代码,你就发现我们什么都不用配置。
编写一个主程序,启动SpringBoot应用
现在创建一个包,在包下创建一个java类,命名随便,我这里命名为DemoApplication ,如下图,编写的代码如下:
1 | import org.springframework.boot.SpringApplication; |
代码写好了就直接运行吧,你没听错,啥都不用做,直接运行就好了,运行了之后,直接在浏览器中访问,你就会发现成功了,舒不舒服。
SpringBoot简化部署
从创建到运行就是这么方便简单,非常舒服,在进行代码分析讲解之前,我在多说点SpringBoot的甜头,就是打包部署。这个时候会发出疑问,哎,我刚刚创建的时候,好像像Tomcat之类的都没有安装配置,war包也没有打,怎么就运行了呢,更何谈部署。哈哈哈这个时候就能体现SpringBoot的小甜头了,SpringBoot项目可以打成jar包,然后在不需要安装运行环境的情况下,就能直接运行jar包,启动程序,可以移植性非常强。我们可以使用Maven命令打包,也可以直接借助Idea打包,Maven命令自己直接网上查找就可以了,这里我演示使用Idea打包方便,具体操作如下,在Idea侧边栏有Maven Projects,点击打开:
等待运行结束,在日志那里,如下图
把打包好的jar包粘贴到桌面,然后打开命令行,执行指令就可以运行了。
运行成功,然后直接在浏览器访问一样可以成功访问,是不是很有意思。
下一篇
已经写了好多啦,入门篇分上下,这里先体验了一下用SpringBoot创建项目的方便,小小的甜头激发一下兴趣,下篇就对上面的代码进行分析,然后比较一下我们以前使用的SpringMVC之类的项目和SpringBoot的区别,这样我们入门更加有概念性。