Spring Boot -01- 快速入门篇(详解图文教程)

2023-10-27

作者:肖朋伟
来源:https://blog.csdn.net/qq_40147863/article/details/84194493

Spring Boot -01- 快速入门篇(图文教程)

今天开始不断整理 Spring Boot 2.0 版本学习笔记,大家可以在博客看到我的笔记,然后大家想看视频课程也可以到【慕课网】手机
app,去找【Spring Boot 2.0 深度实践】的课程,令人开心的是,课程完全免费!

什么是 Spring Boot?

在这里插入图片描述

Spring Boot 是由 Pivotal 团队提供的全新框架。Spring Boot 是所有基于 Spring Framework 5.0
开发的项目的起点。Spring Boot 的设计是为了让你尽可能快的跑起来 Spring 应用程序并且尽可能减少你的配置文件。

设计目的: 用来简化新 Spring 应用的初始搭建以及开发过程。

从最根本上来讲,Spring Boot 就是一些库的集合,它能够被任意项目的构建系统所使用。它使用 “习惯优于配置”
(项目中存在大量的配置,此外还内置一个习惯性的配置)的理念让你的项目快速运行起来。用大佬的话来理解,就是 spring boot
其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 maven 整合了所有的 jar 包,spring boot 整合了所有的框架,总结一下及几点:

(1)为所有 Spring 开发提供一个更快更广泛的入门体验。

(2)零配置。无冗余代码生成和XML 强制配置,遵循“约定大于配置” 。

(3)集成了大量常用的第三方库的配置, Spring Boot 应用为这些第三方库提供了几乎可以零配置的开箱即用的能力。

(4)提供一系列大型项目常用的非功能性特征,如嵌入式服务器、安全性、度量、运行状况检查、外部化配置等。

(5)Spring Boot 不是Spring 的替代者,Spring 框架是通过 IOC 机制来管理 Bean 的。Spring Boot 依赖
Spring 框架来管理对象的依赖。Spring Boot 并不是Spring 的精简版本,而是为使用 Spring 做好各种产品级准备

Spring Boot 在应用中的角色

Spring Boot 是基于 Spring Framework 来构建的,Spring Framework 是一种 J2EE 的框架(什么是
J2EE?

Spring Boot 是一种快速构建 Spring 应用
Spring Cloud 是构建 Spring Boot 分布式环境,也就是常说的云应用
Spring Boot 中流砥柱,承上启下

在这里插入图片描述

环境准备

Maven 安装与环境变量配置

(1)Maven 安装:

在这里插入图片描述

(2)Maven 配置环境变量:

解压到一个路径,然后配置环境变量:

  • 新建变量名:MAVEN_HOME 变量值:D:\server\apache-maven-3.6.0(这是我的 MAVEN 路径)
  • 编辑变量名:Path 在最前面加上:%MAVEN_HOME%\bin

(3)检查是否配置成功:

在命令行输入:

mvn -V

然后会一大堆东西:
在这里插入图片描述

(4)配置 maven 仓库:

1.打开 maven 文件夹下的 config 文件夹下的 settings.xml;
2.找到 localRepository
标签,此时是被注释掉的,我们解除注释,然后配置一个路径,例如:D:/space/MavenRepository/maven_jar,这样以后 MAVEN
管理下载的jar 包都会在这个路径下。
【注意】:注意结点的位置,先找到注释掉的部分,贴在下面

<localRepository>D:\space\MavenRepository\maven_jar</localRepository>

在这里插入图片描述

3.配置远程仓库,找到 mirrors 标签

<!--远程仓库-->
<mirror>
  <id>aliyun</id>
  <name>aliyun Maven</name>
  <mirrorOf>*</mirrorOf>
   <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
</mirror>

在这里插入图片描述

4.当然我们需要先建这样一个目录结构,然后还要把settings.xml 复制一份到 D:/space/MavenRepository 下

在这里插入图片描述

(5)在 idea 配置 maven:
点击【File】>【Settings】>搜索【Maven】,按截图配置安装目录和选择刚刚 settings 配置文件;
在这里插入图片描述
选择完settings之后,本地仓库自动改成settings文件中配置的;点击apply,再点击ok即配置完成。


使用 idea 快速搭建 Spring Boot

第一步:新建 Spring Initializr 项目:

在这里插入图片描述

(1)选择 Spring Initializr
(2)选择 SDK,点击【new】这里就是使用 JAVA SDK 要求版本 1.8+,选择你默认安装在 C:\Program
Files\Java\jdk1.8.0_191 目录:
在这里插入图片描述

(3)然后选择默认的 url (不用管)点击【Next】:

在这里插入图片描述

(4)然后填写一下项目的信息:

在这里插入图片描述

(5)先勾选上 Web 依赖:
在这里插入图片描述

(6)勾选 SQl 下的 MySQL,MyBatis 依赖:
(根据自己的项目选择,后面可加)
在这里插入图片描述

(7)选择好项目的位置,点击【Finish】:

在这里插入图片描述

(7)如果是第一次配置 Spring Boot 的话可能需要等待一会儿 IDEA 下载相应的 依赖包,默认创建好的项目结构如下:

在这里插入图片描述

项目结构还是看上去挺清爽的,少了很多配置文件,我们来了解一下默认生成的有什么:

  • SpringbootApplication: 一个带有 main() 方法的类,用于启动应用程序
  • SpringbootApplicationTests:一个空的 Junit 测试了,它加载了一个使用 Spring Boot 字典配置功能的 Spring 应用程序上下文
  • application.properties:一个空的 properties 文件,可以根据需要添加配置属性
  • pom.xml: Maven 构建说明文件

第二步:HelloController

在 【main/java/com.xpwi.springboot】包下新建一个【HelloController】:

在这里插入图片描述

package com.xpwi.springboot;

import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    @RequestMapping("/hello")
    public String hello() {
        return "Hello Spring Boot!";
    }
}

第三步:利用 IDEA 启动 Spring Boot

(1)我们回到 SpringbootApplication 这个类中,然后右键点击运行:

在这里插入图片描述

(2)会提示 Maven 导包,点击 import
在这里插入图片描述

(3)注意:我们之所以在上面的项目中没有手动的去配置 Tomcat 服务器,是因为 Spring Boot 内置了 Tomcat
等待一会儿就会看到下方的成功运行的提示信息:

在这里插入图片描述

(4)此时,可以看到我们的 Tomcat 运行在 8080 端口,我们来访问下面地址试一下:

http://localhost:8080/hello

在这里插入图片描述

Spring Boot 项目文件介绍

一、解析 pom.xml 文件:

(1)让我们来看看默认生成的 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.xpwi</groupId>
    <artifactId>springboot</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <packaging>jar</packaging>

    <name>springboot</name>
    <description>Demo project for Spring Boot</description>

    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
        <java.version>1.8</java.version>
    </properties>

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

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

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


</project>

(2)我们可以看到一个比较陌生一些的标签 ,这个标签是在配置 Spring Boot 的父级依赖:

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.0.RELEASE</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

有了这个,当前的项目才是 Spring Boot 项目,spring-boot-starter-parent 是一个特殊的 starter
,它用来提供相关的 Maven 默认依赖,使用它之后,常用的包依赖就可以省去 version 标签。

关于具体 Spring Boot 提供了哪些 jar 包的依赖,我们可以查看本地 Maven
仓库下:\repository\org\springframework\boot\spring-boot-dependencies\2.1.0.RELEASE\spring-boot-dependencies-2.1.0.RELEASE.pom
文件来查看,挺长的…

二、应用入口类 SpringbootApplication.java

Spring Boot 项目通常有一个名为 *Application 的入口类,入口类里有一个 main 方法, 这个 main 方法其实就是一个标准的
Javay 应用的入口方法。

@SpringBootApplication 是 Spring Boot 的核心注解,它是一个组合注解,该注解组合了:
@Configuration@EnableAutoConfiguration、@ComponentScan; 若不是用
@SpringBootApplication 注解也可以使用这三个注解代替。

  • 其中, @EnableAutoConfiguration 让 Spring Boot 根据类路径中的 jar 包依赖为当前项目进行自动配置 ,例如,添加了 spring-boot-starter-web 依赖,会自动添加 Tomcat 和 Spring MVC 的依赖,那么 Spring Boot 会对 Tomcat 和 Spring MVC 进行自动配置。
  • Spring Boot 还会自动扫描 @SpringBootApplication 所在类的同级包以及下级包里的 Bean ,所以入口类建议就配置在 grounpID + arctifactID 组合的包名下(这里为 com.xpwi.springboot 包)

三、Spring Boot 的配置文件:

Spring Boot 使用一个全局的配置文件 application.properties 或
application.yml,放置在【src/main/resources】目录或者类路径的 /config 下。

Spring Boot 不仅支持常规的 properties 配置文件,还支持 yaml 语言的配置文件。yaml
是以数据为中心的语言,在配置数据的时候具有面向对象的特征。

Spring Boot 的全局配置文件的作用是对一些默认配置的配置值进行修改。

修改 properties 配置文件实例:

(1)打开 resources 下的 application.properties

在这里插入图片描述

(2)在这里我们可以设置访问的端口,将 Tomcat 默认端口设置为 8080 (默认的不修改) ,并将默认的访问路径从 “/” 修改为 “/cn”
时,再访问 http://localhost:8080/ 是什么都没有的,此时要访问 hello 是要使用
http://localhost:8080/cn/hello

在这里插入图片描述

注意:如果是 yml 需要在 “:” 后加一个空格,幸好 IDEA 很好地支持了 yml 文件的格式有良好的代码提示;
我们可以自己配置多个属性

(3) 使用 yml 文件作为配置文件 ,我们直接把 .properties 后缀的文件删掉,使用 .yml 文件来进行简单的配置

在这里插入图片描述

(4)在然后使用在我们的 HelloController.java 类中使用 @Value 来获取配置属性,代码(请看注释):

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Value;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    // 获取.yml 文件中值
    @Value("${name}")
    private String name;

    // 获取 age
    @Value("${csdnUrl}")
    private String csdnUrl;

    //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
    @RequestMapping("/hello")
    public String hello() {
        return name + " CSDN 博客:"+ csdnUrl;
    }
}

(5)重启 Spring Boot ,输入地址:http://localhost:8080/hello 能看到正确的结果:

在这里插入图片描述

【注意】:此时如果你第一次使用 idea 出现中文乱码,解决办法:

在这里插入图片描述

(6)【注意】: 我们并没有在 yml 文件中注明属性的类型,而是在使用的时候定义的。你也可以在配置文件中使用当前配置:

在这里插入图片描述

(7)任然可以得到正确结果:

在这里插入图片描述

(8)【问题】: 这样写配置文件繁琐而且可能会造成类的臃肿,因为有许许多多的 @Value 注解。

可以,封装配置信息

封装配置信息使用方法:

(1)application.yml 文件内容如下:
在这里插入图片描述

(2)新建 author.java 和 HelloController.java 同级,内容如下:

package com.xpwi.springboot;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

@Component
@ConfigurationProperties(prefix = "author")
public class author {
    private  String name;

    private  String csdnUrl;

    public String getCsdnUrl() {
        return csdnUrl;
    }

    public void setCsdnUrl(String csdnUrl) {
        this.csdnUrl = csdnUrl;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

(3)此时可能会报错,如果报错,打开 pom.xml 文件,添加内容(注意位置):

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
            <optional>true</optional>
        </dependency>

在这里插入图片描述

(4)重新编写 HelloController 类,内容如下:

package com.xpwi.springboot;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;

/**
 * 测试控制器
 *
 * @author: @肖朋伟CSDN
 * @create: 2018-11-18
 */
@RestController
public class HelloController {

    // 获取.yml 文件中值
    //@Value("${name}")
    //private String name;

    // 获取 age
    //@Value("${csdnUrl}")
    //private String csdnUrl;

    @Autowired
    private author author;

    //路径映射,对应浏览器访问的地址,访问该路径则执行下面函数
    @RequestMapping("/hello")
    public String hello() {
        return "名字:" + author.getName() + " 地址:" + author.getCsdnUrl();
    }
}

(5)重启 Spring Boot,访问浏览器:

http://localhost:8080/hello

在这里插入图片描述

【提示】:我们可以把配置信息封装成一个类,首先在我们的 name 和 age 前加一个 student 前缀,然后新建一个
StudentProperties 的类用来封装这些信息,并用上两个注解:

  • @Component:表明当前类是一个 Java Bean
  • @ConfigurationProperties(prefix = “author”):表示获取前缀为 author 的配置信息

转载请注明出处:肖朋伟:https://blog.csdn.net/qq_40147863/article/details/84194493

更多文章链接:

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spring Boot -01- 快速入门篇(详解图文教程) 的相关文章

随机推荐

  • Kafka3.0.0版本——手动调整分区副本示例

    目录 一 服务器信息 二 启动zookeeper和kafka集群 2 1 先启动zookeeper集群 2 2 再启动kafka集群 三 手动调整分区副本 3 1 手动调整分区副本的前提条件 3 2 手动调整分区副本的示例需求 3 3 手动
  • 实现FPGA Verilog HDL与NIOS II的通信数据交换——利用AVALON总线

    平时用FPGA基本都是全程用Verilog HDL编程 当遇到液晶的时候 发现Verilog的还不如C语言来的方便 但是用NIOS来编写的时候 实现NIOS与Verilog的通信又是一个问题 今天用了两种方法实现Verilog与NIOS通信
  • C#Socket编程服务器和多客户端通信,客户端和客户端通信

    对于Socket编程 网上资料 博文一抓一大把 不过大多数都是简单讲解单客户端和服务端通信的实例 这里主要给大家展现一下在 net平台上用窗体程序实现的过程 不过比较有特点的是会告诉大家如何实现不同客户端之间的通信 它们如何通过一个服务端准
  • 2023年数学建模国赛C题思路+模型+代码+论文

    一 数学建模常用方法 各赛题思路开赛后会第一时间更新 数学建模是将实际问题抽象为数学模型 并利用数学方法进行求解和分析的过程 在数学建模中 常用的模型算法非常多 下面列举了一些常见的模型算法 线性回归 线性回归是一种常见的建模方法 用于建立
  • 【编程测试题】LeetCode single-number

    Given an array of integers every element appears twice except for one Find that single one Note Your algorithm should ha
  • Windows下谨慎使用动态磁盘

    电脑上的硬盘 磁盘 原本为动态分区 昨天换了一块新的1T的硬盘后 就把旧硬盘改装成移动硬盘了 但是改成移动硬盘后电脑无法识别出来 经检测发现是动态分区的问题 结合之前的经历 个人建议要谨慎使用动态磁盘 基本磁盘和动态磁盘 在网上搜 动态磁盘
  • android data文件夹操作

    1 看代码 public class DBTest extends Activity SQLiteDatabase db Button bn null ListView listView Override public void onCre
  • Qt中时间戳和时间的相互转换关系

    以下内容摘抄博客 https www cnblogs com simp p 17236018 html include
  • 【转】Codeblocks MinGW 配置openCV

    Code Blocks is an GPL based and cross platform IDE This is the tutorials using Code Blocks with OpenCV Create a simple c
  • sublime text3 自定义配色方案

    可以实现自定义修改配色方案 生成下载 绝对github上的神器 自定义配色方案 修改保存后 下载后缀为tmTheme的文件 然后打开Sublime Text 点击菜单栏的首选项 gt 浏览插件 此时会弹出一个窗口 路径大概就是 Sublim
  • VS工作目录,输出目录

    默认情况下 输出目录 和 输出文件 两个属性对应的目录是一样的 这样用着方便 当然 输出文件的值在输出目录的值的基础上还包含有exe文件名 如果两个不一样 则中间生成的链接器用的如xx ilk和xx pdb文件等在输出目录 而最终生成的xx
  • C语言 分支与循环语句 上

    3 5 表达式语句 printf hehe n 函数调用语句 空语句 有时候我们需要一条语句 但是这条语句什么都不需要做 叫做空语句 return 0 分号隔开的是一条语句 用一条语句加一个分号 控制语句用于控制程序的执行流程 以实现程序的
  • Windows 10 中的 BitLocker问题

    最近安装双系统 遇到了BitLocker的问题 被windows狠狠地恶心了一把 这里记录下来 后面的兄弟们不要躺坑 1 BitLocker是什么东西 就是这个界面 首先 这里有微软官方的解释 链接 总结来说就是一种加密方式 实质上个人理解
  • Angular4对cookie的操作

    cookie详细方法及使用 time number 2 60 60 1000 cookie过期时间两个小时 2 60 60 1000 储存cookie this cookieService set userId this userId ne
  • 【大数据】HiveQL:视图

    HiveQL 视图 视图可以允许保存一个查询 并向对待表一样对这个查询进行操作 这是一个逻辑结构 因为它不像一个表会存储数据 换句话说 Hive 目前暂不支持物化视图 当一个查询引用一个视图时 这个视图所定义的查询语句将和用户的查询语句组合
  • 首次域名注册

    什么是域名 域名是Internet网络上的一个服务器或一个网络系统的名字 在全世界 没有重复的域名 域名的形式是以若干个英文字母或数字组成 由 分隔成几部分 如 56dr cn 就是一个域名 域名与网址有什么区别 一个完整网址范例如下 ht
  • 如何评价代码的好坏?

    我们一般从可维护性 可读性 可扩展性 可测试性 可复用性 简洁性来评价代码的质量 可维护性 所谓维护无外乎就是修改bug 修改老的代码 添加新的代码之类的工作 代码易维护指的是在不破坏原有代码设计 不引入新的bug的前提下 能够快速的修改或
  • python基础(5):深入理解 python 中的赋值、引用、拷贝、作用域

    2019独角兽企业重金招聘Python工程师标准 gt gt gt 在 python 中赋值语句总是建立对象的引用值 而不是复制对象 因此 python 变量更像是指针 而不是数据存储区域 这点和大多数 OO 语言类似吧 比如 C java
  • JAVA基础学习笔记1

    教程来源 https www runoob com java java tutorial html 以下是个人学习笔记 用水平线划分小节 我的第一个JAVA程序 通常都写成这样 public class HelloWorld public
  • Spring Boot -01- 快速入门篇(详解图文教程)

    作者 肖朋伟 来源 https blog csdn net qq 40147863 article details 84194493 Spring Boot 01 快速入门篇 图文教程 今天开始不断整理 Spring Boot 2 0 版本