当前位置: 首页 > news >正文

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

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • leetcode-207. 课程表
  • java基础概念08-跳出多重循环嵌套
  • 基于主成分分析(PCA)的平面拟合(python)
  • 从0开始学习c++01-软件下载和安装
  • 诊断技巧分享 | 用WPS500压力传感器测试空调压力波形?
  • MySQL存储引擎MyISAM和InnoDB
  • 关于npm --save
  • 如何提高计算机视觉技术在复杂环境和低光照条件下的物体识别准确率?
  • 调用百度的大模型API接口实现AI对话!手把手教程!
  • 【数据中台】大数据管理平台建设方案(原件资料)
  • 【C语言】数组
  • K-近邻和神经网络
  • 结合python+redis+mysql制作镜像
  • Aippt产品运行逻辑分析
  • Linux 面试准备 - 2024
  • (三)从jvm层面了解线程的启动和停止
  • [译]如何构建服务器端web组件,为何要构建?
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【翻译】babel对TC39装饰器草案的实现
  • canvas 高仿 Apple Watch 表盘
  • JavaScript 一些 DOM 的知识点
  • JavaScript实现分页效果
  • Median of Two Sorted Arrays
  • Phpstorm怎样批量删除空行?
  • vue总结
  • WePY 在小程序性能调优上做出的探究
  • 从 Android Sample ApiDemos 中学习 android.animation API 的用法
  • 等保2.0 | 几维安全发布等保检测、等保加固专版 加速企业等保合规
  • 后端_MYSQL
  • 基于OpenResty的Lua Web框架lor0.0.2预览版发布
  • 基于web的全景—— Pannellum小试
  • 记录一下第一次使用npm
  • 聊聊sentinel的DegradeSlot
  • 罗辑思维在全链路压测方面的实践和工作笔记
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 微信小程序上拉加载:onReachBottom详解+设置触发距离
  • 我的面试准备过程--容器(更新中)
  • 小程序button引导用户授权
  • 小程序上传图片到七牛云(支持多张上传,预览,删除)
  • 学习HTTP相关知识笔记
  • 一份游戏开发学习路线
  • ​​快速排序(四)——挖坑法,前后指针法与非递归
  • ​第20课 在Android Native开发中加入新的C++类
  • ‌分布式计算技术与复杂算法优化:‌现代数据处理的基石
  • #### golang中【堆】的使用及底层 ####
  • #QT(一种朴素的计算器实现方法)
  • #我与Java虚拟机的故事#连载13:有这本书就够了
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (C语言版)链表(三)——实现双向链表创建、删除、插入、释放内存等简单操作...
  • (差分)胡桃爱原石
  • (二)七种元启发算法(DBO、LO、SWO、COA、LSO、KOA、GRO)求解无人机路径规划MATLAB
  • (二十五)admin-boot项目之集成消息队列Rabbitmq
  • (分布式缓存)Redis持久化
  • (附源码)c#+winform实现远程开机(广域网可用)
  • (紀錄)[ASP.NET MVC][jQuery]-2 純手工打造屬於自己的 jQuery GridView (含完整程式碼下載)...