SpringBoot的基础配置

目录

SpringBoot快速搭建web程序

第一步:导包

第二步:配置SpringBoot引导类

 第三步:编写controller类

第四步:在SpirngBoot引导类中启动项目

起步依赖

SpringBoot基础配置

配置文件格式

yaml语法规则

读取yml配置文件的方法

 第一种:使用@Value注入

第二种:封装全部数据到Environment对象(SpringBoot自己封装的)

第三种:自定义对象封装指定数据

多环境配置开发 -配置文件

第一种:使用yml文件

第二种:使用properties文件

 本地启动SpringBoot项目

可以发现启动的这个程序是pro环境,那如何在启动的时候切换环境呢?

也可以临时改端口号

​编辑 Maven的pom.xml文件中配置多环境

配置文件分类


SpringBoot快速搭建web程序

第一步:导包

<?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>
<!--    继承--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.10.RELEASE</version></parent><groupId>com.hhh</groupId><artifactId>spring_day8_springBoot</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

这里首先要继承SpringBoot

<!--    继承--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.10.RELEASE</version></parent>

 然后导入自己想要的功能的依赖,这里要创建web程序,就导入web功能的依赖包,版本号不用指定

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

第二步:配置SpringBoot引导类

//SpringBoot引导类
@SpringBootApplication
public class Application {public static void main(String[] args) {SpringApplication.run(Application.class,args);}
}

 第三步:编写controller类

@RestController
@RequestMapping("/books")
public class Book {@RequestMapping("/save")public String save(){System.out.println("user save");return "hello";}
}

第四步:在SpirngBoot引导类中启动项目

启动成功

起步依赖

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

starter:SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的

parent:所有SpringBoot项目要继承的项目,定义了若干个坐标版本号,以达到减少依赖冲突的目的 

SpringBoot基础配置

配置文件格式

 配置文件有三种格式分别为

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

它们的文件名都是application,这是SpringBoot默认的文件名,这三种文件的优先级依次降低

验证:在这三个配置文件种都配置端口号,看启动的web程序的端口号是哪个

 结果:

可见properties格式的配置文件优先级最高,然后到yml文件(可以把properties注释自己去比较看看),最后是yaml文件 

yaml语法规则

  1. 大小写敏感
  2. 属性层级关系使用多行进行描述,每层结尾使用冒号(:)结束
  3. 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不可以使用tab键)
  4. 属性值前面要要添加一个空格,即属性名和属性值之间间隔一个冒号一个空格
  5. #表示注释 

读取yml配置文件的方法

people:name: hhhage: 19hobby:- sing- dance- rap
#数组的值前面要加一个-

 第一种:使用@Value注入

@RestController
@RequestMapping("/books")
public class Book {@Value("${people.name}")private String name;@Value("${people.age}")private Integer age;@Value("${people.hoppy[1]}")//取数组索引为1的值private String hobby;@RequestMapping("/save")public String save(){//System.out.println("user save");System.out.println("name:"+name);System.out.println("age:"+age);System.out.println("hobby:"+hobby);return "hello";}}

 

 这里也许有人会好奇,明明都没有导入外部配置文件,是怎么读取里面的数据的?

其实SpringBoot已经帮我们把名字为appliction的配置文件都导入加载了,所以我们可以直接读配置文件里的属性值

第二种:封装全部数据到Environment对象(SpringBoot自己封装的)

 注意:是这个包下的Environment类对象

org.springframework.core.env.Environment;
@RestController
@RequestMapping("/books")
public class Book {@Value("${people.name}")private String name;@Value("${people.age}")private Integer age;@Value("${people.hobby[1]}")//取数组索引为1的值private String hobby;@Autowiredprivate Environment environment;@RequestMapping("/save")public String save(){//System.out.println("user save");System.out.println("name:"+name);System.out.println("age:"+age);System.out.println("hobby:"+hobby);System.out.println("-----");System.out.println("name:"+environment.getProperty("people.name"));System.out.println("age:"+environment.getProperty("people.age"));System.out.println("hobby:"+environment.getProperty("people.hobby[0]"));return "hello";}
}

第三种:自定义对象封装指定数据

@Configuration//交给Spring管理
@ConfigurationProperties(prefix = "people")//与配置文件中的people属性进行映射绑定
public class People {private String name;private Integer age;private String[] hobby;@Overridepublic String toString() {return "People{" +"name='" + name + '\'' +", age=" + age +", hobby=" + Arrays.toString(hobby) +'}';}public String getName() {return name;}public void setName(String name) {this.name = name;}public Integer getAge() {return age;}public void setAge(Integer age) {this.age = age;}public String[] getHobby() {return hobby;}public void setHobby(String[] hobby) {this.hobby = hobby;}
}

 这个类中使用了两个注解

@Configuration-->把这个类交给Spring管理

@ConfigurationProperties(prefix = "people")-->与yml配置文件中的people属性进行映射绑定

@RestController
@RequestMapping("/books")
public class Book {@Value("${people.name}")private String name;@Value("${people.age}")private Integer age;@Value("${people.hobby[1]}")//取数组索引为1的值private String hobby;@Autowiredprivate Environment environment;@Autowired//根据类型自动注入private People people;@RequestMapping("/save")public String save(){//System.out.println("user save");System.out.println("name:"+name);System.out.println("age:"+age);System.out.println("hobby:"+hobby);System.out.println("-----");System.out.println("name:"+environment.getProperty("people.name"));System.out.println("age:"+environment.getProperty("people.age"));System.out.println("hobby:"+environment.getProperty("people.hobby[0]"));System.out.println("----");System.out.println(people);return "hello";}
}

结果:

多环境配置开发 -配置文件

第一种:使用yml文件

spring:profiles:active: pro---spring:profiles: dev
server:port: 8081---spring:profiles: test
server:port: 8082---spring:profiles: proserver:port: 8083

先写一个主环境

spring:
  profiles:
    active:

然后不同的开发环境之间使用 ---  三个杠间隔

之后相使用哪个环境直接在active属性赋值即可,如要使用pro环境,结果端口就要为8083

第二种:使用properties文件

先创建一个application.properties文件,定义主环境

spring.profiles.active=

 再写两个properties定义多环境

使用test环境

结果端口号为8082 

 本地启动SpringBoot项目

使用插件进行jar打包

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

 然后先点clean,再点package

之后在target中看见jar包

打开jar包本地路径

启动

可以发现启动的这个程序是pro环境,那如何在启动的时候切换环境呢?

在启动命令后面加上

--spring.profiles.active=环境名

也可以临时改端口号

只要加上

--server.port=端口号

 Maven的pom.xml文件中配置多环境

  <profiles>
<!--        开发环境--><profile><id>env_dev</id><properties><profile.active>dev</profile.active></properties></profile>
<!--        测试环境--><profile><id>env_test</id><properties><profile.active>test</profile.active></properties>
<!--            设置为默认环境--><activation><activeByDefault>true</activeByDefault></activation></profile>
<!--        生产环境--><profile><id>env_pro</id><properties><profile.active>pro</profile.active></properties></profile></profiles>

yml文件使用pom.xml中的默认环境

spring:profiles:active: @profile.active@
#使用的是pom.xml中profile.active中的值
---spring:profiles: dev
server:port: 8081---spring:profiles: test
server:port: 8082---spring:profiles: proserver:port: 8083

结果:为test环境

但是我们可以发现这里yml使用pom.xml文件的属性值时使用的是@@占位符,我们也可以进行修改,进而使用默认的占位符${}

<build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin><plugin><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin></plugins></build>

 插件管理中加上

 <plugin><artifactId>maven-resources-plugin</artifactId><version>3.2.0</version><configuration><useDefaultDelimiters>true</useDefaultDelimiters></configuration></plugin>

这样一来就可以使用默认的占位符了

配置文件分类

1级:与jar包同级目录的config目录里的yml文件--file:config/application.yml(优先级最高)

2级:与jar包同级目录的yml文件--file:application.yml

3级:resource里config包下的yml文件--classpath:config/application.yml

4级:resource里的yml文件--classpath:application.yml

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/387025.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

UE5+OpenCV配置(Windows11系统)

一、概述 因为需要在UE5中使用OpenCV这些工具进行配置&#xff0c;所以在网络上参考借鉴一些资料进行配置。查询到不少的资料&#xff0c;最后将其配置成功。在这里顺便记录一下自己的配置成功的过程。 二、具体过程 &#xff08;一&#xff09;版本 使用Windows11系统、UE5.…

ONLYOFFICE 协作空间 2.6 已发布:表单填写房间、LDAP、优化房间和文件管理等

更新后的 ONLYOFFICE 协作空间带来了超过 20 项新功能和优化&#xff0c;让工作更加高效和舒适。阅读本文了解详情。 表单填写房间 这次更新增加了一种新的房间类型&#xff0c;可在 ONLYOFFICE 协作空间中组织简单的表单填写流程。 通过表单填写房间&#xff0c;目前可以完成…

将控制台内容输出到文本文件

示例代码&#xff1a; Imports System.IO Module Module1Sub Main()Dim fs As New FileStream("D:\Desktop\test\输出结果.txt", FileMode.Create, FileAccess.Write, FileShare.None)Dim sw As New StreamWriter(fs)Console.SetOut(sw)Console.SetError(sw)For i …

【北京迅为】《i.MX8MM嵌入式Linux开发指南》-第四篇 嵌入式Linux系统移植篇-第六十九章uboot移植

i.MX8MM处理器采用了先进的14LPCFinFET工艺&#xff0c;提供更快的速度和更高的电源效率;四核Cortex-A53&#xff0c;单核Cortex-M4&#xff0c;多达五个内核 &#xff0c;主频高达1.8GHz&#xff0c;2G DDR4内存、8G EMMC存储。千兆工业级以太网、MIPI-DSI、USB HOST、WIFI/BT…

移动UI:排行榜单页面如何设计,从这五点入手,附示例。

移动UI的排行榜单页面设计需要考虑以下几个方面&#xff1a; 1. 页面布局&#xff1a; 排行榜单页面的布局应该清晰明了&#xff0c;可以采用列表的形式展示排行榜内容&#xff0c;同时考虑到移动设备的屏幕大小&#xff0c;应该设计合理的滚动和分页机制&#xff0c;确保用户…

在线教育数仓项目(数据采集部分1)

文章目录 数据仓库概念项目需求及架构设计项目需求分析系统数据流程设计框架版本选型集群规模估算集群资源规划设计 数据生成模块目标数据页面事件曝光启动播放错误 数据埋点主流埋点方式&#xff08;了解&#xff09;埋点数据上报时机埋点数据日志结构 服务器和JDK准备服务器准…

Linux:shell的基础用法

shell的基础用法 shell变量 Shell 支持以下三种定义变量的方式&#xff1a; valueabcvalue‘abc’value“abc”(注意&#xff0c;赋值号的周围不能有空格) Shell 变量的命名规范 变量名由数字、字母、下划线组成必须以字母或者下划线开头不能使用 Shell 里的关键字&#xff08…

IDEA的pom.xml显示ignored 的解决办法

问题&#xff1a; idea中创建Maven module时&#xff0c;pom.xml出现ignored。 原因&#xff1a; 相同名称的module在之前被创建删除过&#xff0c;IDEA会误以为新的同名文件是之前删除掉的&#xff0c;将这个新的module的pom.xml文件忽略掉显示ignored. 解决&#xff1a; 在…

springboot超市商品管理系统-计算机毕业设计源码55289

摘 要 随着信息技术的快速发展和普及&#xff0c;传统的超市管理模式已经无法满足现代商业的需求。为了提高超市的管理效率&#xff0c;优化商品销售流程&#xff0c;本文提出了一种基于SpringBoot框架的超市商品管理系统。该系统结合了现代软件开发技术&#xff0c;包括MySQL数…

WATLOW Power Series SSR User’s Manual

WATLOW Power Series SSR User’s Manual

【Java】字符串String类(011)

目录 ♦️API和API帮助文档 ♦️创建String &#x1f38f;直接赋值类 &#x1f38f;new类 &#x1f421;空参类 构造方法&#xff1a; 举例代码&#xff1a; &#x1f421;有参类 构造方法&#xff1a; 举例代码&#xff1a; &#x1f421;字符数组类 构造方法&…

【C++】类和对象——流插入和流提取运算符重载

目录 前言ostream和istream自定义类型的流插入重载自定义类型的流提取重载解决私有问题日期类总接口 前言 我们在上一节实现日期类时&#xff0c;在输入和输出打印时&#xff0c;经常会调用两个函数&#xff1a; void Insert()//输入函数{cin >> _year;cin >> _mo…

项目比赛经验分享:如何抓住“黄金一分钟”

项目比赛经验分享&#xff1a;如何抓住“黄金一分钟” 前言引起注意&#xff1a;用事实和故事开场明确痛点&#xff1a;描述问题和影响介绍解决方案&#xff1a;简明扼要激发兴趣&#xff1a;使用视觉辅助概述演讲结构&#xff1a;清晰的路线图我的开场白示例结语 前言 在创新的…

(源码分析)springsecurity认证授权

了解 1. 结构总览 SpringSecurity所解决的问题就是安全访问控制&#xff0c;而安全访问控制功能其实就是对所有进入系统的请求进行拦截&#xff0c;校验每个请求是否能够访问它所期望的资源。 根据前边知识的学习&#xff0c;可以通过Filter或AoP等技术来实现&#xff0c;Spr…

鸿蒙应用框架开发【简单时钟】 UI框架

简单时钟 介绍 本示例通过使用ohos.display接口以及Canvas组件来实现一个简单的时钟应用。 效果预览 使用说明 1.界面通过setInterval实现周期性实时刷新时间&#xff0c;使用Canvas绘制时钟&#xff0c;指针旋转角度通过计算得出。 例如&#xff1a;"2 * Math.PI / …

【PHP】系统的登录和注册

一、为什么要学习系统的登录和注册 系统的登录和注册可能存在多种漏洞&#xff0c;这些漏洞可能被恶意攻击者利用&#xff0c;从而对用户的安全和隐私构成威胁。通过学习系统的登录和注册理解整个登录和注册的逻辑方便后续更好站在开发的角度思考问题发现漏洞。以下是一些常见…

BUGKU-WEB-好像需要密码

如果点击start attrack 后出现 Payload set 1: Invalid number settings 的提示&#xff0c;先点hex 后点 decimal 再开始start attrack&#xff0c;这是一个软件bug&#xff0c;需要手动让它刷新。 解题思路 先随便输入测试&#xff1a;admin看看源码吧那就爆破了 据说&…

WEBKIT 通过JavaScript 调用本地,硬件未来之窗OS硬件APP

以酒店为例我们需要调用shen份证读取&#xff0c;采集人脸&#xff0c;门锁写房卡&#xff0c;如何通过浏览器调用 1.通过本地http服务 2.通过webkit模式 这里说政务单位模式的集成 由于篇幅问题&#xff0c;怎么集成webkit就不说了 一、webkkit加载交互本地代码 browser.…

旅游卡,免费,旅游是真的吗?真相是……

但这种包来回大交通&#xff0c;一旦成本大于利润&#xff0c;他们就会以各种理由推卸责任。这就是我在“揭秘&#xff1a;共享旅游卡免费旅游&#xff0c;包来回路费&#xff0c;这背后的3大真相&#xff01;”这篇文章里面讲到那个大妈的惨痛教训。 以上这5点真相&#xff0…

大数据学习之Flink基础(补充)

Flink基础 1、系统时间与事件时间 系统时间&#xff08;处理时间&#xff09; 在Sparksreaming的任务计算时&#xff0c;使用的是系统时间。 假设所用窗口为滚动窗口&#xff0c;大小为5分钟。那么每五分钟&#xff0c;都会对接收的数据进行提交任务. 但是&#xff0c;这里有…