一、SpringBoot简介

1.1 什么是SpringBoot

说到spring系列,可能大家都很熟悉,spring、springmvc,美之名曰:spring全家桶,那么springboot其实也是全家桶里边的,boot有引导,引擎的意思,springboot其实就可以看作是一个引导驱动一样,为了能够让我们顺利的创建spring应用而引进的一个框架,它可以做到让我们零配置的去启动一个应用,springboot其实也是一组jar包,引入这些jar之后,然后就可以帮你自动构建项目并且发布、运行项目。

其实springboot只是为了默认配置了很多东西,它内部帮我们管理整合了很多开发框架的使用方式,试想我们之前开发一个spring应用,要在xml中配置很多东西,启动部署时,还要有tomcat环境,还有什么日志配置的,反正都是各种配置,这种配置几乎都是前篇一律,繁琐不堪,我们就急需把这些配置省略掉,因为都是固定模式的东西,springboot就这样来了,简化了甚至可以说去除了我们所有的配置,(其实内部自己用约定大于配置的方式帮我们配置了),真正的一键搭建,一键运行,可能你用了springboot之后,就再也见不到xml文件了。

稍微总结一下:

springboot是一组jar包,我们称它为springboot框架,它大大简化了我们开发spring应用的过程。

二、SpringBoot上手使用

前边我们已经说到,springboot其实就是一组jar包,spring-boot-*.jar,所以我们完全可以像使用传统jar包那样使用springboot,springboot不依赖任何创建工具,甚至只需一个记事本就可以开发我们的程序,不过springboot的jar包,依赖就有很多了,这样的话我们一个一个引入也是不行的,所以这里我们要使用maven工具来帮助我们管理包的依赖,其它的就不需要了。

检查maven环境和jdk环境,这两点就不说了,基本是开发必须的:

2.1 创建项目结构

根据自己习惯创建一个目录,我的目录如下,目前是空目录:

这里我先用VSCode来编辑项目中的一些文件,用VSCode打开这个目录,并添加一个名称为pom.xml的文件,复制如下内容:

 <?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.springbootstudy</groupId>
<artifactId>springboot-helloworld</artifactId>
<version>0.0.1-SNAPSHOT</version>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>
</project>

其中关键代码,来引入springboot的jar包,这是springboot启动所需要的最基本的jar包,如果用idea工具的话,可以点进去看到依赖很多的jar包。

     <parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.4.0.RELEASE</version>
</parent>

2.2 执行mvn命令

在当前springboot-helloworld命令下执行mvn package 命令,maven会根据pom.xml中的配置去解析下载还原包,到此为止,springboot所需要的基础包及其依赖已经还原好了,其实这一步可以再我们写完代码之后做,这里只是看一下maven的效果,说明没什么问题。

2.3 添加web启动器

到目前为止,我们还没有说明springboot要构建的是什么样的一个项目,这里我们添加一个web启动器,也就是 spring-boot-starter-web 包,说明了我们是要构建一个web应用。

 <dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>

其实这个包夜依赖了很多包,比如:spring-webmvc、spring-web、tomcat什么的, 只是我们这里看不到,这种依赖也是springboot提前为我们构建好的。现在pom.xml的结构如下:

2.4 编写代码

maven默认有约定,源代码需要在src/main/java下,所以我们需要手动建立这样一个目录,然后添加一个HelloWorld.java的文件。

 import org.springframework.boot.*;
import org.springframework.boot.autoconfigure.*;
import org.springframework.stereotype.*;
import org.springframework.web.bind.annotation.*;
@RestController
@EnableAutoConfiguration
public class HelloWorld {
@RequestMapping("/")
String home() {
return "Hello World!";
}
public static void main(String[] args) throws Exception {
SpringApplication.run(HelloWorld.class, args);
}
}

在springboot-helloworld目录下打开cmd,运行 mvn spring-boot:run,来启动我们的web应用,启动成功,会有springboot的banner输出:

访问http://localhost:8080,出现Hello World,到现在为止,就这几个步骤我们就启动了我们的web应用,没有出现tomcat,没有出现部署,接下来我们继续写我们的业务逻辑代码就可以了。

2.5 打包部署

毕竟最后我们还是要在生产环境上运行我们的web应用,这样启动可不行,我们需要安装打包插件,插件会自动把我们项目打包成一个可执行的jar包,那么我们通过java -jar直接执行就可以了,也不用在服务器上安装tomcat什么的。

安装插件,在pom.xml中添加插件依赖:

    <build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>

执行 mvn package 命令打包,在target目录里边会出现一个springboot-helloworld-0.0.1-SNAPSHOT.jar的文件

我们注意到这个文件很大,难不成我写一个helloworld就这么大,其实里边有很多依赖包,都打在一起了,这样我们只要拿着这个一个包到哪里都能运行我们的web项目,服务器可以不装tomcat就能启动,我们也可以猜到里边肯定内置了tomcat,当然需要安装java运行环境。(废话...)

我们用360压缩打开,可以看到里边我们熟悉的包依赖:

接着我们把上边那个jar直接复制到桌面上改一个名字,然后直接运行命令 java -jar springboot-helloworld.jar

输出如下,然后访问http://localhost:8080/,出现Hello World的输出,之前一样。

三、总结

以上就是springboot的最原始的搭建方式,看起来非常的简单,我们基本上没有什么配置文件,可以说是零配置,我们直接写的代码,当然springboot这样的框架也是入门容易精通难,因为里边的东西还有很多很多,接下来的东西我们以后继续学习,总结springboot带给我们了一种飞一般的开发体验,所以我们就马上要起飞了。

SpringBoot起飞系列-入门(一)的更多相关文章

  1. SpringBoot起飞系列-Web开发(四)

    一.前言 从今天你开始我们就开始进行我们的web开发,之前的一篇用SpringBoot起飞系列-使用idea搭建环境(二)已经说明了我们如何进行开发,当然这是搭建起步,接下来我们就开始进行详细的开发, ...

  2. SpringBoot起飞系列-国际化(六)

    一.前言 国际化这个功能可能我们不常用,但是在有需要的地方还是必须要上的,今天我们就来看一下怎么在我们的web开发中配置国际化,让我们的网站可以根据语言来展示不同的形式.本文接续上一篇SpringBo ...

  3. SpringBoot起飞系列-自定义starter(十)

    一.前言 到现在,我们可以看出来,如果我们想用一些功能,基本上都是通过添加spring-boot-starter的方式来使用的,因为各种各样的功能都被封装成了starter,然后把相关服务注入到容器中 ...

  4. SpringBoot起飞系列-使用idea搭建环境(二)

    一.环境配置 安装idea的教程就不说了,相信大家肯定已经安装好了,另外maven环境肯定也安装好了,那么我们就开始使用idea开发工具来创建一个springboot的web项目,这里奉上一个idea ...

  5. SpringBoot起飞系列-日志使用(四)

    一.SpringBoot中的日志组件 日志是一个系统中不可缺少的组件.在项目中,我们常用的日志组件有JUL.JCL.Jboss-logging.logback.log4j.log4j2.slf4j.. ...

  6. SpringBoot起飞系列-配置文件(三)

    一.SpringBoot中的配置文件 说起到配置文件,大家并不陌生,早在springboot之前,我们用ssh,ssm框架开发的时候整天都要接触配置文件,那时候的配置文件基本上都是.propertie ...

  7. SpringBoot起飞系列-数据访问(九)

    一.前言 前边我们已经学些了开发的基本流程,最重要的一步来了,怎么样和数据库交互才是最重要的,毕竟没有数据那就相当于什么也没做,本文我们来学习使用springboot整合jdbc.mybatis.jp ...

  8. SpringBoot起飞系列-配置嵌入式Servlet容器(八)

    一.前言 springboot中默认使用的是tomcat容器,也叫做嵌入式的servlet容器.因为它和我们平常使用的tomcat容器不一样,这个tomcat直接嵌入到的springboot,平常我们 ...

  9. SpringBoot起飞系列-拦截器和统一错误处理(七)

    一.前言 在前边部分我们已经学会了基本的web开发流程,在web开发中,我们通常会对请求做统一处理,比如未登录的用户要拦截掉相关请求,报错页面统一显示等等,这些都需要配置,可以大大简化我们的代码,实现 ...

随机推荐

  1. HTML基础介绍

    前言: H5是目前行业里非常热门的一种语言,学习难度较低,可以快速入门.我个人也在学习H5,采用写博客的方式来梳理我学到的知识点,也分享给更多想学习的人一起来学习. Tip:个人学习过程中梳理的知识点 ...

  2. 一个接口多个实现类的Spring注入方式

    1. 首先, Interface1 接口有两个实现类 Interface1Impl1 和 Interface1Impl2 Interface1 接口: package com.example.serv ...

  3. Python循环语句及函数的定义

      循环语句¶ 重复执行某一个固定的动作或者任务 语法 for 变量 in序列: 语句1 语句2 ..... In [2]: # 列表知识只是以后会讲 # 比如[1,2,3,4,5,6,7] list ...

  4. unity编辑器扩展_08(创建自定义窗口)

    代码: using UnityEngine;using UnityEditor; public class MyWidow : EditorWindow{    [MenuItem("Win ...

  5. CSS 之Grid 网格知识梳理2

    继上篇的CSS 之Grid下半部分   14.将单元格划分到一个区域,使用grid-template-areas属性: ag: grid-template-areas: "header  h ...

  6. 《阿里巴巴Java开发手册1.4.0》阅读总结与心得(五)

    笔者作为一名有数年工作经验的Java程序员,仔细研读了这份手册,觉得其是一份不可多得的好材料.阿里巴巴在发布时所说,“阿里巴巴集团推出的<阿里巴巴Java开发手册(正式版)>是阿里巴巴近万 ...

  7. J-Subarray_2019牛客暑期多校训练营(第二场)

    题意 有一个只由1,-1组成的数组,给出所有连续的1所在位置,求满足1的个数大于-1的个数的子区间的数量 题解 参考博客:https://www.cnblogs.com/Yinku/p/1122149 ...

  8. CF - 1110F Nearest Leaf

    题目传送门 题解: 先用题目给定的dfs方式得到dfs序,记录下出入的dfs序. 很明显可以得知的是,以u为根的子树的dfs序在 in[u] - out[u] 的范围之内. 将每个询问先全部存到对应的 ...

  9. CQ18阶梯赛第二场

    H国的身份证号码I HihoCoder - 1558 只要单纯的判断一下前后的乘积就好了, 因为不是很想处理倍数的关系, 所以我这里是用 string去处理. 代码: #include<bits ...

  10. Atcoder E - Meaningful Mean(线段树+思维)

    题目链接:http://arc075.contest.atcoder.jp/tasks/arc075_c 题意:问数组a有多少子区间平均值为k 题解:一开始考虑过dp,但是显然不可行,其实将每一个数都 ...