详细SpringBoot教程之入门(一)-程序员宅基地

技术标签: SpringBoot实战  SpringBoot框架使用  SpringBoot  Spring  教程  

写在前面

鉴于有人留言说想要学习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的区别,这样我们入门更加有概念性。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/DBC_121/article/details/104383089

智能推荐

Apache Apollo MQTT服务器配置与调试_apollo mqtt 关闭用户名-程序员宅基地

文章浏览阅读2.5k次。1、下载并安装一个大神的博客:MQTT再学习 -- 搭建MQTT服务器及测试2、直接启动Apache Apollo服务器的命令./apollo create xxx./xxx/bin/apollo-broker run3、后台运行apollo-broker-service installapollo-broker-service start|restart|stop|u..._apollo mqtt 关闭用户名

【二】数据结构之List_list<list<r>>-程序员宅基地

文章浏览阅读8.4k次。【二】数据结构之List数据结构中,线性表无独有偶,除了Vector还有另外一种ADT,就是我们要讨论的List,与向量Vector有所不同,列表List不在是系统连续的内存空间,也就是说不是基于数组来实现的了,尽管在物理上不是线性的,但是抽象层次上,List在逻辑上依旧是现行表,因此List优化了Vector插入,删除操作的劣势,但是在查找方面却不如Vector的二分查找来的快。 List有哪些_list>

Java多线程(六)Lock的使用 (ReentrantLock;ReentrantReadWriteLock) 7.30_private lock lock = new reentrantlock();-程序员宅基地

文章浏览阅读167次。ReentrantLock类:JDK1.5中增加了ReentrantLock类,可以实现线程之间的同步互斥;还具有嗅探锁定,多路分支通知等功能;使用ReentrantLock实现同步:public class MyThread extends Thread{ private Service service; public MyThread(Service service) { ..._private lock lock = new reentrantlock();

迁移学习全面理解_数据域和标签域都存在差异的迁移学习-程序员宅基地

文章浏览阅读6.9k次,点赞7次,收藏51次。目录目标和本质分类迁移学习全面概述:从基本概念到相关研究什么是迁移学习?什么使得迁移学习与众不同呢?迁移学习的定义迁移学习的场景迁移学习的应用从模拟中学习适应到新的域跨语言迁移知识迁移学习的方法使用预训练的 CNN 特征理解卷积神经网络学习图像的隐含结构学习域不变的表征让表征更加相似混淆域相关的研究领域半监督学习更..._数据域和标签域都存在差异的迁移学习

Ubuntu 20.04下PyCharm配置QtDesigner,PyUIC和Pyrcc_ubuntu20.04 下 pycharm 配置qtdesigner pyuic 和 pyrcc-程序员宅基地

文章浏览阅读3k次,点赞6次,收藏31次。配置前准备首先安装qt5工具:sudo apt-get install qt5-default qttools5-dev-tools安装pyqt5:sudo pip3 install pyqt5配置QtDesigner打开PyCharm,依次点击File–>Settings–>Tools–>External Tools.点击右边界面上的 “ + ”,弹出 Create Tool 对话框。Name 根据你自己的喜好填写,我这里填写的是QtDesignerProgram 填_ubuntu20.04 下 pycharm 配置qtdesigner pyuic 和 pyrcc

【MySQL】本地创建MySQL数据库详解-程序员宅基地

文章浏览阅读1.1k次,点赞25次,收藏25次。(方法一)点开【开始】菜单>>在搜索框中输入“cmd”>>在搜索结果中,右击【命令提示符】程序>>点击选择“以管理员身份运行”>>进入到MySQL安装的bin目录下。>>随便输入密码,回车>>进入到MySQL安装的data目录下,打开以“err”结尾的文件>>搜索password查找初始密码。右键点击“此电脑”>>属性>>高级系统设置>>环境变量>>编辑Path变量,添加MySQL安装目录下的bin文件路径。(方法二)进入到MySQL安装的bin目录下。在解压好的文件夹中创建my.ini文件。_本地创建mysql数据库

随便推点

数据库模糊匹配通配符的简单举例_模糊查询一个字符和多个字符用什么代替-程序员宅基地

文章浏览阅读2.3k次。使用SQL通配符可以替代一个或多个字符,即模糊查询。SQL通配符必须与 LIKE 运算符一起使用。在 SQL 中,可使用以下通配符如下:1、% 替代一个或多个字符 2、_ 仅替代一个字符 3、[charlist] 字符列中的任何单一字符 4、[^charlist]或者[!charlist] 不在字符列中的任何单一字符_模糊查询一个字符和多个字符用什么代替

嵌入式Linux学习之旅(6)— 使用正点原子的Linux内核启动系统_4.1.15-g49efdaa-程序员宅基地

文章浏览阅读1.7k次。Linux内核在i.mx6ull的编译运行编译Linux Kernel需要使用lzop库,所以需要安装,否则编译内核会失败!!!sudo apt-get install lzop一、Linux Kernel的编译在Ubuntu 中创建~/imx6ull/project/alientek_linux目录存放Linux Kernel源码,将正点原子已经移植好的源码linux-imx-4.1..._4.1.15-g49efdaa

认证方式-程序员宅基地

文章浏览阅读109次。Claims-based分开认证和授权,如用QQ账户登录系统。.net 下实现ClaimsIdentityClaimsPrincipalWindows使用windows认证:<authentication mode="Windows" />相关模块:WindowsAuthenticationModule  //Authenticat..._"

计算机十大算法应用 知乎,2019 智源·知乎看山杯算法大赛收官:7 支团队脱颖而出,单人队荣摘桂冠!...-程序员宅基地

文章浏览阅读152次。雷锋网 AI 开发者按:1 月 10 日,北京智源人工智能研究院联合知乎、数据评测平台 biendata 举办的「2019 智源·知乎看山杯专家发现算法大赛」正式收官。大赛颁奖仪式暨算法交流会在清华大学 FIT 大楼多功能厅举行,北京智源人工智能研究院副院长、清华大学计算机系副主任、教授唐杰,知乎技术副总裁李大任出席了该仪式,并为获奖选手颁发了获奖证书。清华大学计算机系长聘副教授、智源学者刘知远,..._知乎刘看山杯数据

最好的降噪蓝牙耳机有哪些?目前最好的降噪蓝牙耳机推荐_目前降噪效果最好的蓝牙耳机-程序员宅基地

文章浏览阅读108次。耳机应该是除了手机之外陪伴你最久的一样电子产品吧?别看它个头不大,作用可不小,如果你已经想入手一款蓝牙耳机,又不知道该怎么选,看这里,我来告诉你,哪一款最适合你。一、南卡A2降噪蓝牙耳机价格:399充电方式:无线充电续航时间:6H+30H蓝牙音频格式:AAC-SBCNank南卡听名字不熟悉不要紧,重点看品质。南卡A2整个耳机仅4.1克,无限充电方便小巧,蓝牙5.2信号传输稳定,解析能力高,三频均衡,无论是接打电话、听音乐,都能表现出超高水准,尤其配有13mm超大动圈,高通3040芯片_目前降噪效果最好的蓝牙耳机

【图像分割】医学图像分割多目标分割(多分类)实践-程序员宅基地

文章浏览阅读2.4w次,点赞77次,收藏467次。文章目录1. 数据集2. 数据预处理3. 代码部分3.1 训练集和验证集划分3.2 数据加载和处理3.3 One-hot 工具函数3.4 网络模型3.5 模型权重初始化3.6 损失函数3.7 模型评价指标3.8 训练3.9 模型验证3.10 实验结果1. 数据集来自ISICDM 2019 临床数据分析挑战赛的基于磁共振成像的膀胱内外壁分割与肿瘤检测数据集。(原始数据)(ground truth)灰度值:灰色128为膀胱内外壁,白色255为肿瘤。任务是要同时分割出膀胱内外壁和肿瘤部分,加上背景_多目标分割

推荐文章

热门文章

相关标签