SpringBoot入门

  • SpringBoot简介
    • SpringBoot快速入门
    • SpringBoot快速启动
  • SpringBoot概述
    • 程序启动
    • 切换web服务器
  • 配置文件
    • 配置文件格式
    • yaml格式
    • yaml配置文件数据读取
    • 多环境配置
    • 配置文件分类
  • SpringBoot整合Junit
  • SpringBoot整合Mybatis
  • SpringBoot实现SSM框架案例

SpringBoot简介

SpringBoot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。SSM框架简化web项目开发,SpringBoot简化spring开发。

接下来我们通过使用SpringBoot来开发SpringMVC。

SpringBoot快速入门

SpringBoot 开发SpringMVC大致步骤如下:

  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息
  2. 选择当前模块需要使用的技术
  3. 创建控制器类
  4. 运行自动生成的Application引导类
  • 选择 Spring Initializr ,用来创建 SpringBoot 工程

  • 由于我们需要开发一个 web 程序,使用到了 SpringMVC 技术。所以选中 Web ,然后勾选 Spring Web


项目创建完成后,目录如下图:

  • 在com.itheima.controller包下创建BookController,代码具体内容如下:

可以看到,在SpringBoot项目中BookController中的代码与整合SSM框架时格式一致。

@RestController
@RequestMapping("/books")
public class BookController {@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println("id ====>"+id);return "{'springboot':info}";}
}
  • 启动服务器

运行 SpringBoot 工程不需要使用本地的 Tomcat 和 插件,只运行项目 com.itheima 包下的 Application 类。
接着我们在浏览器中输入http://localhost:8080/books/1
可以看到控制台输出信息如下:

至此我们便完成了使用SpringBoot开发SpringMVC,我们发现步骤非常简单。项目创建完成后,我们只写了BookController,接着直接运行Application的主方法就行了。

注意:
1.在创建好的工程中不需要创建配置类
5. 创建好的项目会自动生成其他的一些文件,而这些文件目前对我们来说没有任何作用,所以可以将这些文件删除。
可以删除的目录和文件如下:

  • .mvn
  • .gitignore
  • HELP.md
  • mvnw
  • mvnw.cmd
    要研究这个问题,我们需要看看 Application 类和 pom.xml 都书写了什么。先看看 Applicaion 类,该类内容如下:
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class, args);
}
}

这个类中的东西很简单,就在类上添加了一个 @SpringBootApplication 注解,而在主方法中就一行代码。我们在启动服务器时就是执行的该类中的主方法。
再看看 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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><!--指定了一个父工程,父工程中的东西在该工程中可以继承过来使用--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.7.2</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.itheima</groupId><artifactId>springboot_01_quickstart</artifactId><version>0.0.1-SNAPSHOT</version><!--JDK版本为8.0--><properties><java.version>1.8</java.version></properties><dependencies><!--该依赖就是我们在创建 SpringBoot 工程勾选的那个 Spring Web 产生的--><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>

我们代码之所以能简化,就是因为指定的父工程和 Spring Web 依赖实现的。

SpringBoot快速启动

后端人员可以将SpringBoot工程打成jar包,该jar包运行不依赖Tomcat和Idea这些工具也可以正常运行,只是这个jar包在运行过程中连接和我们自己程序相同的mysql数据库即可。这样前端人员也能非常方便地协同开发。

  • 打包

由于我们在构建SpringBoot工程时已经在pom.xml中配置了如下插件

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

所以我们只需要使用Maven的package指令打包就会在target目录下生成对应的Jar包。

  • 启动

进入jar包所在的位置,在命令行窗口中输入如下命令即可启动项目。

java -jar springboot_02_spring-0.0.1-SNAPSHOT.jar

SpringBoot概述

我们知道SpringBoot的作用是简化Spring的搭建过程和开发过程。
原始Spring环境搭建和开发存在以下问题:配置繁琐和依赖设置繁琐

SpringBoot程序优点恰巧就是针对Spring的缺点

  • 自动配置。用来解决Spring程序配置繁琐的问题
  • 起步依赖。这个是用来解决Spring程序依赖设置繁琐的问题
  • 辅助功能(内置服务器)。我们在启动SpringBoot程序时没有使用本地的tomcat也没有使用tomcat插件,而是使用SpringBoot内置的服务器。

在实际开发中,需要使用什么技术只需引入该技术对应的起步依赖即可。
使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供。

程序启动

创建的每一个SpringBoot程序时都包含一个类似于下面的类,我们将这个类称为引导类。

package com.itheima;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication
public class Springboot02SpringApplication {public static void main(String[] args) {SpringApplication.run(Springboot02SpringApplication.class, args);}}

注意!

  • SpringBoot在创建项目时,采用jar的打包方式
  • SpringBoot的引导类是项目的入口,运行引导类的main方法即可启动项目。

切换web服务器

现在我们启动工程使用的是tomcat服务器,现在我们想使用jetty服务器,jetty在我们maven高级时讲maven私服使用的服务器。而要切换web服务器就需要将默认的tomcat服务器给排除掉。我们使用排除依赖

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-tomcat</artifactId></exclusion></exclusions></dependency>

接着我们引入jetty服务器。

        <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-jetty</artifactId><version>2.7.2</version></dependency>

最后我们运行引导类,在日志信息中就可以看到使用的是jetty服务器。

配置文件

配置文件格式

SpringBoot提供了3种属性配置方式。

  • application.properties
  • application.yaml
  • application.yml

我们现在启动服务器默认的端口号是8080,我们想把端口号改为80,这样在访问时就可以不写端口号了。
在SpringBoot程序中我们有3种配置文件方式来修改端口号。

  • application.properties
server.port=80
  • application.yaml
server:port: 80
  • application.yml
server:port: 80

需要注意的是SpringBoot程序的配置文件名必须是application,只是后缀名不同。并且在yml和yaml配置文件中“ : ”后面,数据前必须加空格。
在SpringBoot中三种不同类型的配置文件的优先级如下:
application.properties>application.yml>application.yaml

yaml格式

YAML是一种数据序列化格式。使用这种格式的配置文件具有如下优势:

  1. 容易阅读
  2. 容易与脚本语言交互
  3. 以数据为核心,重数据轻格式

YAML文件扩展名

  • .yml(主流)
  • .yaml
    上面两种后缀名都可以,以后更多的还是yml的。

yaml配置文件数据读取

读取配置文件数据的方式一共有如下三种:

  1. 使用@Value注解

使用@Value注解可以从配置文件中读取数据,注解中用于读取属性名引用方式是:${一级属性名.二级属性名....}我们可以在BookController中使用@Value注解读取配合文件数据。如下

@RestController
@RequestMapping("/books")
public class BookController {@Value("${lesson}")private String lesson;@Value("${server.port}")private Integer port;@Value("${enterprise.subject[0]}")private String subject_00;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(lesson);System.out.println(port);System.out.println(subject_00);return "hello , spring boot!";}
}
  1. Environment对象(实际开发较少使用

使用@Value读取到的数据非常零散,SpringBoot还可以使用@AutoWired注解注入Environment对象的方式读取数据。这种方式SpringBoot会将配置文件中所有的数据封装到Environment对象中。当需要用到数据时,只需调用Environment对象的getProperty(String name)方法获取。具体代码如下:

@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Environment env;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(env.getProperty("lesson"));System.out.println(env.getProperty("enterprise.name"));System.out.println(env.getProperty("enterprise.subject[0]"));return "hello , spring boot!";}
}
  1. 自定义对象

SpringBoot还提供了将配置文件中的数据封装到我们自定义的实体类对象中的方式。具体操作如下:

  • 在实体类上添加@Component注解将实体类交给spring管理。
  • 使用@ConfigurationProperties注解表示加载配置文件,在该注解中也可以使用prefix属性指定只加载指定前缀的数据
  • 在BookController中使用@AutoWired进行注入
@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {private String name;private int age;private String tel;private String[] subject;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getTel() {return tel;}public void setTel(String tel) {this.tel = tel;}public String[] getSubject() {return subject;}public void setSubject(String[] subject) {this.subject = subject;}@Overridepublic String toString() {return "Enterprise{" +"name='" + name + '\'' +", age=" + age +", tel='" + tel + '\'' +", subject=" + Arrays.toString(subject) +'}';}
}
@RestController
@RequestMapping("/books")
public class BookController {@Autowiredprivate Enterprise enterprise;@GetMapping("/{id}")public String getById(@PathVariable Integer id){System.out.println(enterprise.getName());System.out.println(enterprise.getAge());System.out.println(enterprise.getSubject());System.out.println(enterprise.getTel());System.out.println(enterprise.getSubject()[0]);return "hello , spring boot!";}
}

多环境配置

以后在工作中,对于开发环境、测试环境、生产环境的配置肯定都不相同。这意味着我们可能需要经常修改配置文件。SpringBoot为开发者提供了多环境的快捷配置,需要切换环境时只需要改一个配置即可。

不同类型的配置文件多环境开发的配置都不相同,接下来对不同类型的配置文件进行说明。
yaml文件
在application.yml中使用---来分割不同的配置,spring.profiles是用来给不同的配置起名字的。使用spring.profiles.active来告知SpringBoot使用哪段配置。
application.yml的内容如下:

spring:profiles:active: test
---
# 开发
spring:profiles: dev #给开发环境起的名字
server:port: 80
---
# 生产
spring:profiles: pro # 给生产环境起的名字
server:port: 81
---
# 测试
spring:profiles: test #给测试环境起的名字datasource:driver-class-name: com.
server:port: 82

properties文件
properties类型的配置文件配置多环境需要定义不同的配置文件:
application-dev.properties、application-test.properties、application-pro.properties
SpringBoot只会默认加载名为application.properties的配置文件,所以需要在application.properties配置文件中设置启用哪个配置文件,例如使用如下命令表示使用application-pro.properties中的配置。

spring.profiles.active=pro

命令行启动参数设置
使用SpringBoot开发程序以后都是打成jar包,通过java -jar xxx.jar的方式来启动服务器。如何在jar包状态下切换配置文件。解决方式如下:

java -jar xxx.jar --spring.profiels.active=test

同时我们还可以通过这种方法临时修改端口号,命令如下:

java -jar xxx.jar --server.port=80

配置文件分类

SpringBoot定义了配置文件不同的放置位置的优先级不同,优先级由低到高如下:

  • 1级:classpath:application.yml
  • 2级:classpath:config/application.yml
  • 3级:file(jar包所在目录下):application.yml
  • 4级:file(jar包所在目录下):config/application.yml

SpringBoot整合Junit

SpringBoot整合Junit非常简单,步骤如下:

  • 在测试类上添加@SpringBootTest注解
  • 使用@AutoWired注入要测试的资源
  • 定义测试方法进行测试

SpringBoot整合Mybatis

使用SpringBoot整合MyBatis也很简单,在创建模块是,需要选择mysql、mybatis的技术集。之后创建实体类、dao接口、测试类以及编写配置文件。这里有两点需要注意,1、我们需要在dao接口上添加@Mapper注释。2、数据库连接四要素以及指定数据源需要书写在配置文件中。
application.yml中的内容如下:

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/spring_dbusername: rootpassword: roottype: com.alibaba.druid.pool.DruidDataSource

SpringBoot实现SSM框架案例

综合一下上面整合SpringMVC、Junit、MyBatis的步骤。
需要注意的是在SpringBoot程序中是没有webapp目录的,所以静态资源需要放在resources下的static下。

【SpringBoot】SpringBoot入门相关推荐

  1. 玩转springboot:入门程序

    Spring Boot 入门 一.Spring Boot 简介 官网英文: Spring Boot makes it easy to create stand-alone, production-gr ...

  2. SpringBoot初步入门

    文章目录 1. SpringBoot概述 1.1什么是SpringBoot 1.2 SpringBoot的特点 2. 快速入门 2.1 创建工程并引入依赖 2.2 编写controller 2.3 启 ...

  3. SpringBoot从入门到精通教程

    SpringBoot从入门到精通教程 一.来自ImportNew公众号的SpringBoot教程系列,可参考学习 SpringBoot (一) :入门篇--http://mp.weixin.qq.co ...

  4. SpringBoot从入门到精通教程(二十九)- 微信企业支付集成(五分钟集成)

    需求背景 SpringBoot用法:微信企业支付集成(五分钟集成) 问题痛点 通过SpringBoot框架,集成服务端微信企业支付接口,做到下载即用(填写好相关微信支付后台相关Key信息),最快五分钟 ...

  5. SpringBoot从入门到精通教程(三十一)- 爬虫框架集成

    需求背景 SpringBoot用法:爬虫框架集成 业务场景 以抓取"今日头条"新闻举例说明 技术点 1. 集成爬虫框架webmagic(更多了解webmagic,可以去官方地址) ...

  6. SpringBoot项目入门,使用Eclipse创建Springboot项目

    SpringBoot项目入门(Eclipse创建项目) 最近公司项目不急,所以有大把的时间来学习新的知识,最近在网上发现springBoot非常火,于是试着自己搭建一个springboot项目出来,将 ...

  7. SpringBoot从入门到精通-佟刚-专题视频课程

    SpringBoot从入门到精通-437人已学习 课程介绍 SpringBoot是企业级开发的整体整合解决方案,特别用于构建微服务应用,旨在用简单的方式让开发人员适应各种开发场景: 课程收益      ...

  8. SpringBoot | SpringBoot快速入门

    文章目录 SpringBoot快速入门(一) 1.什么是SpringBoot 2.什么是微服务架构 3.第一个SpringBoot程序 4.SpringBoot自动装配原理 (1)Pom.xml (2 ...

  9. SpringBoot 基础入门

    SpringBoot 基础入门 Spring Boot简介 Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的创建.运行.调试.部署等.使用Spring ...

  10. SpringBoot从入门到精通教程(二十七)- @Valid注解用法详解+全局处理器Exception优雅处理参数验证用法

    问题痛点 用 Spring 框架写代码时,写接口类,相信大家对该类的写法非常熟悉.在写接口时要写效验请求参数逻辑,这时候我们会常用做法是写大量的 if 与 if else 类似这样的代码来做判断,如下 ...

最新文章

  1. PowerDesigner的数据类型
  2. 新手小白Linux(Centos6.5)部署java web项目(mongodb4.0.2安装及相关操作)
  3. HTML+CSS+JS实现 ❤️简单的翻纸牌记忆游戏❤️
  4. Mac超强扒站神器——SiteSucker Pro 4.3.3 mac中英文
  5. 万能驱动安装器_Windows驱动安装指南
  6. 1019 General Palindromic Number
  7. 2018软工第六次作业
  8. 在发布ASP.NET网站的时候,出现state server错误
  9. CSS3 高斯模糊与动画效果
  10. 替换Android中VM 加载动态库方式
  11. HDOJ 2035 人见人爱A^B
  12. 【图神经网络】从源头探讨 GCN 的行文思路
  13. GitHub网站项目下载速度过慢、下载失败问题成功解决
  14. python矩阵乘法代码_python3 单行代码实现矩阵相乘
  15. PS放大图片而不模糊的操作方法
  16. 香港流行乐黄金二十年——经典歌手(音乐人)全面回顾
  17. ElementUI表格如何获取当前行的数据?
  18. 中国的ruby on rails 视频
  19. 区块链安全分析:安全是重中之重,需要各方企业共同守护 | 新加坡Meetup
  20. 编程实践--现有10元,每瓶饮料2元;2个空瓶换一瓶饮料;4个瓶盖换一瓶饮料;总共能喝多少瓶?

热门文章

  1. ath9k中的EEPROM
  2. VS2008调试时出现 0x75fcb727 处最可能的异常: 0x000006BA: RPC 服务器不可用的解决办法
  3. win10共享打印错误0x0000006_win10系统局域网无法共享惠普打印机提示0x000006be错误的设置教程...
  4. seo包括java吗,seo和java哪个更好
  5. Dreamweaver制作简易Flash相册
  6. 淘点金代码跳转失效?
  7. 短信后台构架开发说明—移讯云短信系统
  8. CS231n 两层神经网络反向传播实现
  9. mybatis中association 和collection 的区别
  10. 关于阿里巴巴的“旅游宝”的互联网金融思考