前言
之前学习了Spring框架的JDBC、MVC,SpringBoot也是Spring框架下面的一个子项目,是Spring生态的一部分;
为什么我们要使用Spring的Boot子项目呢?
如果单独使用Spring或者SpringMVC作为Web开发框架,需要通过大量的配置类/配置文件把JDBC、Druid、Redis等Web开发依赖包放到Spring容器中;
Spring推出了1个快速开发工具包(SpringBoot),可以让程序员更加方便、快速启动Spring容器并自动整合各种Web开发依赖;
SpringBoot的核心功能=Tomcat+Spring+SpringMVC的功能;
Maven和SpringBoot的联系?
- maven是实现SpringBoot的基础,SpringBoot项目本身就是Maven项目。
- 在maven项目中使用springboot的多个starter加几个约定,就能成为SpringBoot项目了。
- Spring Boot工程本质上就是一个Maven工程。
SpringBoot有以下特点:
1.独立运行
Spring Boot 而且内嵌了各种 servlet 容器,Tomcat、Jetty 等, 现在不再需要打成 war 包部署到容器中,Spring Boot 只要打成一个可 执行的 jar 包就能独立运行,所有的依赖包都在一个 jar 包内。
2.简化配置
spring-boot-starter-web 启动器自动依赖其他组件,简少了 maven 的配置。
3.自动配置
Spring Boot 能根据当前类路径下的类、jar 包来自动配置 bean, 如添加一个 spring-boot-starter-web 启动器就能拥有 web 的功能,无 需其他配置。
4.无代码生成和 XML 配置
Spring Boot 配置过程中无代码生成,也无需 XML 配置文件就能完成所有配置工作,这一切都是借助于条件注解完成的, 这也是 Spring4.x 的核心功能之一
5.避免大量的 Maven 导入和各种版本冲突
6.应用监控
Spring Boot 提供一系列端点可以监控服务及应用,做健康检测。
一、SpringBoot概述
通过Spring的缺点,看到SpringBoot的优势;
1.Spring优缺点
1.1.优点
Spring是一个轻量级的Java开源框架,通过IOC和AOP技术实现高内聚、低耦合的Web应用开发;
1.2.缺点
- 当添加1个框架或技术时,就需要添加相应的maven依赖;
- 当添加1个框架或技术时,引入的依赖可能会出现依赖冲突;
- 当添加1个框架或技术时,需要添加大量的配置信息;
2.SpringBoot概述
SpringBoot是对Spring的缺点进行大大改善和优化,SpringBoot基于约定大于配置的思想,提供了大量默认配置和实现;
使用SpringBoot之后,程序员只需要按照SpringBoot规定的方式去进行程序代码的开发即可,无需再去编写一堆复杂的配置;
3.SpringBoot主要功能
版本锁定:SpringBoot在父工程中进行了大量常见依赖的版本锁定
起步依赖:SpringBoot按功能应用场景将需要的依赖进行组合,允许程序员以starter的方式在maven中进行引入一组依赖;
自动配置:在导入starter之后SpringBoot主要帮我们完成了2件事,相关组件的自动导入(按条件装配),相关组件的自动装配;
内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行;
总之:SpringBoot最主要作用就是帮我们快速的构建庞大的Spring项目,并且尽可能的减少配置,让程序员去关注业务而非配置。
二、SpringBoot入门案例
搭建一个SpingBoot项目,实现访问浏览器地址 localhost:8080/index
,返回 hello, springboot!
1.创建工程
1个SpringBoot工程要求必须去继承1个springboot提供的父工程(org.springframework.boot),父工程中引入了大量的依赖, 并对大量的依赖版本进行了锁定;
当前SpringBoot工程继承了这个父工程之后,我们就无需再在当前项目中添加依赖;
<?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.0modelVersion><span><</span><span>groupId</span><span>></span>com.zhanggen<span><span>groupId</span><span>></span> <span><</span><span>artifactId</span><span>></span>springboot-quickstart<span><span>artifactId</span><span>></span> <span><</span><span>version</span><span>></span>1.0-SNAPSHOT<span><span>version</span><span>></span> <span><</span><span>parent</span><span>></span> <span><</span><span>groupId</span><span>></span>org.springframework.boot<span><span>groupId</span><span>></span> <span><</span><span>artifactId</span><span>></span>spring-boot-starter-parent<span><span>artifactId</span><span>></span> <span><</span><span>version</span><span>></span>2.2.2.RELEASE<span><span>version</span><span>></span> <span><span>parent</span><span>></span> <span><</span><span>dependencies</span><span>></span> <span><</span><span>dependency</span><span>></span> <span><</span><span>groupId</span><span>></span>org.springframework.boot<span><span>groupId</span><span>></span> <span><</span><span>artifactId</span><span>></span>spring-boot-starter-web<span><span>artifactId</span><span>></span> <span><span>dependency</span><span>></span> <span><span>dependencies</span><span>></span>
project>
pom.xml如果需要编译成jar包,pom.xml添加如下内容
<build> <plugins> <plugin> <groupId>org.springframework.bootgroupId> <artifactId>spring-boot-maven-pluginartifactId> plugin> plugins> build>2. 编写Controller
package com.zhanggen.web.controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; //这个文件和SpringMVC的Controller是一样的 @RestController public class IndexController { @RequestMapping("/index") public String index() { return "hello springBoot!"; } }
IndexController.java
3. 编写启动类
package com.zhanggen; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; //这个类的位置;放到com.zhanggen包下面 @SpringBootApplication public class QuickStartApplication { public static void main(String[] args) { //参数1:当前类字节码 参数2:args SpringApplication.run(QuickStartApplication.class, args); } }
QuickStartApplication.java
4.案例解析
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:c6564004-abe4-4989-9085-1081b72a0923
[En]
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:390da7bc-c06d-4c65-88fa-24c95e0a2aa6
- 我们的工程在引入
spring-boot-starter-web
依赖的时候,为什么没有指定版本? - spring-boot-starter-web是个啥,为什么引入了它之后,就不需要再引入我们原来做spring开发的那一堆包了?
- 我们的程序没有部署到tomcat,为什么就可以被访问?
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:78c2b2e2-0976-4f43-a851-4c5192ac3623[En]
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a3e5c9e2-5342-46a1-9ce8-d2eca55f53fd
4.1. 版本锁定
我们的项目继承了 spring-boot-starter-parent
父工程,它内部已经锁定了一些常见依赖的版本号,故而在我们自己开发的工程中无需再指定依赖的版本。
4.2.起步依赖
SpringBoot根据场景将各种依赖组装成了一个个的集合(starter),我们根据当前SpringBoot的功能引入指定的starter即可。
4.3. 内置Tomcat
SpringBoot在中引入一个内置的tomcat,故而我们无需再将程序部署到Tomcat中即可运行。
4.4.默认配置
SpringBoot的约定大于配置,即SpringBoot的大量配置都有默认值,如果我们不去写配置就使用默认的。
比如说:T omcat默认端口 8080、redis 默认端口6379 、session 的过期默认时间为30m等等;
三、SpringBoot配置文件
SpringBoot是基于约定的,很多配置都有默认值;
但它也允许使用自己的配置替换默认配置,具体做法是在resources下创建文件:
1.自定义配置文件
我们可以在当前项目的resource目录下,创建以下3类文件,但配置文件的名称只能叫application;
- application.yaml
- application.yml
- application.properties
SpringBoot启动时会依次加载:yaml、yml、properties文件,如果多个配置文件同时存在,后加载的会覆盖前面加载的内容。
2.yaml介绍
yaml和yml文件格式是一样的,是专门用来写配置文件的语言,非常简洁和强大。
2.1.语法
大小写敏感
使用缩进表示层级关系
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:73eed409-6c80-4eed-bc5f-f367c6f2922c<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:6ba6a6d3-eea1-433e-873b-4c8942a9becb</font>*</details>
[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:2ea02d77-fc0d-428c-a0de-47bffbf3de0a<details><summary>*<font color='gray'>[En]</font>*</summary>*<font color='gray'>[TencentCloudSDKException] code:FailedOperation.ServiceIsolate message:service is stopped due to arrears, please recharge your account in Tencent Cloud requestId:a5d52237-9127-4e42-878b-5bbbd35a1293</font>*</details>
server:
port: 8082
servlet:
context-path: /itheima
2.2.数据格式
纯量:单个的、不可再分的值(包括字符串字符串、布尔值、数值、Null、时间类型)
username: 'jack'
对象:键值对的集合,又称为映射(mapping)/ 哈希(hashes) / 字典(dictionary)
user:
username: '张三'
password: '123'
数组:一组按次序排列的值,又称为序列(sequence) / 列表(list)
addressList:
- '北京'
- '上海'
- '广州'
3.SpringBoot读取配置文件的三种方式
在SpringBoot项目中有3种方式读取配置文件中的配置项目;
3.1.Environment(了解)
此对象是Spring框架提供的,用来表示整个应用运行时的环境,可以读取配置文件中的属性值并逐个注入到Bean对象的对应属性中;
3.2.@Value注解 (了解)
此注解是Spring框架提供的,用来读取配置文件中的属性值并逐个注入到Bean对象的对应属性中;
3.3.@ConfigurationProperties注解
此注解是SpringBoot框架提供的,用来快速、方便地将配置文件中的自定义属性值批量注入到某个Bean对象的相应属性中;
3.4.配置文件信息
#自定义配置信息
server:
port: 8002
servlet:
context-path: /zhanggen
#SpringBoot配置控制台输出彩色日志
spring:
output:
ansi:
enabled: ALWAYS
#对象:键值对的集合
user:
username: '张根'
password: '123'
application.yaml
3.5.获取代码
package com.zhanggen.web.controller;
import com.zhanggen.config.UserConfig;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.core.env.Environment;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
//这个文件和SpringMVC的Controller是一样的
@RestController
public class IndexController {
//注意Environment位于org.springframework.core.env.Environment包
@Autowired
private Environment environment;
@Value("${user.username}")
private String username;
@Value("${user.password}")
private String password;
@Autowired
private UserConfig userConfig;
@RequestMapping("/index")
public String index() {
//方式1:使用Environment对象,获取配置文件中的值
System.out.println(environment.getProperty("user.username"));
System.out.println(environment.getProperty("user.password"));
//方式2:使用@Value,获取配置文件中的值
System.out.println(this.username);
System.out.println(this.password);
//方式3:通过定义UserConfig对象获取配置文件中配置信息
System.out.println(userConfig.getUsername());
System.out.println(userConfig.getPassword());
return "hello springBoot!";
}
}
IndexController.java
4.SpringBoot多环境配置
使用springBoot的配置文件application.yaml配置3套环境,分别是测试、开发、生产环境;
4.1.配置文件
`
自定义配置信息
共有
user:
username: ‘公共’
password: ‘8899’
集合哪一套环境
spring:
profiles:
active: test
spring:
output:
ansi:
enabled: ALWAYS
profiles: test
server:
port: 8002
servlet:
context-path: /test
user:
username: ‘测试’
password: ‘122’
Original: https://www.cnblogs.com/sss4/p/16312148.html
Author: Martin8866
Title: 基于SpringBoot实现SSM框架整合
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/562599/
转载文章受原作者版权保护。转载请注明原作者出处!