写在前面

鉴于有人留言说想要学习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,在里面改成如下配置

为了方便,我就直接把内容粘贴出来,你们就不用一个一个打了,如下

<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.targer>1.8</maven.compiler.targer><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></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 ,如下图,编写的代码如下:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;@SpringBootApplication
@RestController
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class, args);}@GetMapping("/hello")public String hello(@RequestParam(value = "name", defaultValue = "World") String name) {return String.format("Hello %s!", name);}
}

代码写好了就直接运行吧,你没听错,啥都不用做,直接运行就好了,运行了之后,直接在浏览器中访问,你就会发现成功了,舒不舒服。

SpringBoot简化部署

从创建到运行就是这么方便简单,非常舒服,在进行代码分析讲解之前,我在多说点SpringBoot的甜头,就是打包部署。这个时候会发出疑问,哎,我刚刚创建的时候,好像像Tomcat之类的都没有安装配置,war包也没有打,怎么就运行了呢,更何谈部署。哈哈哈这个时候就能体现SpringBoot的小甜头了,SpringBoot项目可以打成jar包,然后在不需要安装运行环境的情况下,就能直接运行jar包,启动程序,可以移植性非常强。我们可以使用Maven命令打包,也可以直接借助Idea打包,Maven命令自己直接网上查找就可以了,这里我演示使用Idea打包方便,具体操作如下,在Idea侧边栏有Maven Projects,点击打开:

等待运行结束,在日志那里,如下图


把打包好的jar包粘贴到桌面,然后打开命令行,执行指令就可以运行了。



运行成功,然后直接在浏览器访问一样可以成功访问,是不是很有意思。

下一篇

已经写了好多啦,入门篇分上下,这里先体验了一下用SpringBoot创建项目的方便,小小的甜头激发一下兴趣,下篇就对上面的代码进行分析,然后比较一下我们以前使用的SpringMVC之类的项目和SpringBoot的区别,这样我们入门更加有概念性。

详细SpringBoot教程之入门(一)相关推荐

  1. 小姐姐的详细SpringBoot教程之入门 连接Mysql、Druid数据源和整合MyBatis(三)

    文章目录 1.整合JDBC使用 1.创建项目 2.打开项目 3.使用我们的Idea连接我们的mysql数据库 1. 5.最后,测试是否可以查询数据 6. 最后简单的实现增删改查 2.整合Druid数据 ...

  2. 详细SpringBoot教程之数据访问

    写在前面 鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的 ...

  3. 详细SpringBoot教程之配置文件(一)

    写在前面 鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的 ...

  4. 详细SpringBoot教程之缓存开发

    写在前面 这一系列的博文初步都定下来包括SpringBoot介绍.入门.配置.日志相关.web开发.数据访问.结合docker.缓存.消息队列.检索.任务安全.分布式等等一系列的博文,工作量很大,是个 ...

  5. 详细SpringBoot教程之日志框架

    写在前面 鉴于有人留言说想要学习SpringBoot相关的知识,我这里打算写一个SpringBoot系列的相关博文,目标呢是想让看了这一系列博文的同学呢,能够对SpringBoot略窥门径,这一系列的 ...

  6. ElasticSearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解...

    墨墨导读:之前我们分享了ElasticSearch最全详细使用教程:入门.索引管理.映射详解,本文详细介绍ElasticSearch的索引别名.分词器.文档管理.路由.搜索详解. 一.索引别名 1. ...

  7. 通俗易懂的SpringBoot教程---day1---Springboot入门教程介绍

    通俗易懂的SpringBoot教程-day1-教程介绍 教程介绍: 初级教程: 一. Spring Boot入门 二. Spring Boot配置 三. Spring Boot与日志 四. Sprin ...

  8. ElasticSearch最全详细使用教程:入门、索引管理、映射详解

    墨墨导读:本文介绍了ElasticSearch的必备知识:从入门.索引管理到映射详解. 一.快速入门 1. 查看集群的健康状况http://localhost:9200/_cat http://loc ...

  9. elasticsearch最全详细使用教程:入门、索引管理、映射详解、索引别名、分词器、文档管理、路由、搜索详解

    一.快速入门 1. 查看集群的健康状况 http://localhost:9200/_cat http://localhost:9200/_cat/health?v 说明:v是用来要求在结果中返回表头 ...

最新文章

  1. php 查看init,php 中init log
  2. Linux命令scp用于远程文件的拷贝(上传和下载)
  3. ASP.NE的缓存技术提高Web站点的性能
  4. 作品展结束了,学习才真正的开始
  5. 桌面虚拟化的架构模块化
  6. 23种Python设计模式之工厂方法模式详解
  7. Visa在全球范围内增加对女足的投入
  8. Android中前景,背景 和 Gravity的设置属性
  9. 互换性与测量技术基础知识点总结
  10. html纵向时间轴代码,垂直时间轴HTML
  11. 蓝牙耳机品牌排行榜,连接稳定的四款蓝牙耳机分享
  12. 神来之笔-线程变量实践
  13. 减法器(差分放大器)
  14. Mtk平台出现NE的分析简记
  15. Mac DataGrip 闪退问题
  16. 高考631能上什么好的计算机学校,2021年高考631分左右能上什么大学(100所)
  17. 鲲鹏cpu支持linux,首款国产CAD适配统一操作系统UOS:兼容鲲鹏、兆芯、龙芯等国产CPU...
  18. 解决中文乱码问题:使用编码转换工具
  19. 找不到dns linux,linux – 服务器找不到XXX.in-addr.arpa:NXDOMAIN
  20. 世界杯小组赛积分的所有可能

热门文章

  1. 中级微观经济学:Chap 32 交换
  2. 传感器响应时间与滤波器截止频率的关系
  3. flutter comsumer局部刷新的问题
  4. Oracle 11g R2 RSF(Recurive Subquery factoring)
  5. 网易云MUSIC年终奖0.5?听到消息我扔了耳机
  6. 用户答题接收答案,并存入数据库
  7. codeforces水题100道 第九题 Codeforces Beta Round #63 (Div. 2) Young Physicist (math)
  8. vc++实现内核级进程保护
  9. 智慧城市建设带给安防企业的机遇与挑战
  10. Linux 远程联机服务(二)- Rsh服务器