【SpringBoot】有哪些优点+配置文件如何配置?

  • 博主简介:想进大厂的打工人
  • 博主主页:@xyk:
  • 所属专栏: JavaEE进阶 

Spring 的诞⽣是为了简化 Java 程序的开发的,⽽ Spring Boot 的诞⽣是为了简化 Spring 程序开发
的。Spring Boot是一个开源的Java框架,用于快速构建应用程序和微服务。它基于Spring Framework,通过自动化配置和约定优于配置的方式,使开发人员可以更快地启动和运行应用程序。Spring Boot提供了许多开箱即用的功能和插件,包括嵌入式Web服务器、安全性、数据访问、缓存、测试和监控等,下面就来对SpringBoot项目中的相关配置文件来进行阐述~


目录

文章目录

一、SpringBoot的优点

二、SpringBoot配置文件

2.1 什么是配置文件

2.2 为什么需要配置文件

2.3 properties格式的配置文件

2.4 yml格式的配置文件

2.5 yml 配置不同类型及null:

2.6 yml配置对象

三、设置不同环境的配置文件

3.1 创建不同环境的配置文件:

3.2 在 application.properties或application.yml 中设置行环境


一、SpringBoot的优点

  1. 快速添加依赖,Spring Boot 提供了启动添加依赖的功能,⽤于秒级集成各种框架。
  2. 内置运⾏容器,⽆需配置 Tomcat 等 Web 容器,直接运⾏和部署程序。
  3. 快速部署项⽬,⽆需外部容器即可启动并运⾏项⽬。
  4. 可以完全抛弃繁琐的 XML,使⽤注解和配置的⽅式进⾏开发。
  5. ⽀持更多的监控的指标,可以更好的了解项⽬的运⾏情况。
     

Spring Boot 项⽬有两个主要的⽬录:

  • src/main/java 为 Java 源代码。
  • src/main/resources 为静态资源或配置⽂件:
  • /static:静态资源⽂件夹;
  • /templates:模版资源⽂件夹
     

正确路径:

为了将Bean注入到SpringBoot容器中,要把注入到容器类的类和启动类放到同级目录下

这时候 Spring Boot 项⽬才能正常的将 bean 注⼊到容器中,以上情况反应了 Spring Boot 项⽬的另⼀个特点:约定⼤于配置!!!

二、SpringBoot配置文件

2.1 什么是配置文件

配置文件是一种存储应用程序配置信息的文件,它包含了应用程序所需要的各种参数、选项和设置。SpringBoot配置文件是必须要存在的一个文件,用来配置SpringBoot应用程序的行为,可以使用多种配置文件格式,比如:properties、yml等。

2.2 为什么需要配置文件

整个项⽬中所有重要的数据都是在配置⽂件中配置的,⽐如:

  • 数据库的连接信息(包含⽤户名和密码的设置);
  • 项⽬的启动端⼝;
  • 第三⽅系统的调⽤秘钥等信息;
  • ⽤于发现和定位问题的普通⽇志和异常⽇志等。

想象⼀下如果没有配置信息,那么 Spring Boot 项⽬就不能连接和操作数据库,甚⾄是不能保存可以⽤于排查问题的关键⽇志,所以配置⽂件的作⽤是⾮常重要的。

Spinrg常见的配置文件有两种:.properties 和 .yml,理论上来说,允许两种格式的配置文件可以同时存在,但是在实际开发中,为了可以更好的维护并降低故障发生的概率,我们通常只使用其中一种格式的配置文件,需要特别注意的是,.properties 格式的配置的优先级大于 .yml 格式的配置文件,但加载完 .properties ⽂件之后,也会加载 .yml ⽂件的配置信息。


2.3 properties格式的配置文件

properties 是以键值的形式配置的,key 和 value 之间是以“=”连接的,比如:

# 端口号设置
#server.port=8080
mytest=zhangsan
mytest2=zhangsan2

# 连接数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
spring.datasource.username=root
spring.datasource.password=root

那么,如何读取配置文件中的自定义配置信息呢?

若想要主动读取配置文件的信息,可以使用@Value 注解,该注解使用${} 格式读取,以下代码演示如何读取上述代码中的自定义配置项:

 

 从上述配置key看出,properties 配置⽂件中会有很多的冗余的信息,⽐如这些:

但是 .properties 格式对中文支持并不好,会出现乱码的情况,那么我们可以使用 .yml来解决这种问题~

2.4 yml格式的配置文件

yml 是 YAML 是缩写,它的全称 Yet Another Markup Language 翻译成中⽂就是“另⼀种标记语
⾔”。
基本语法:yml 是树形结构的配置⽂件,它的基础语法是“key: value”,注意 key 和 value 之间使⽤英⽂冒汗加空格的⽅式组成的,其中的空格不可省略!!

server:
  port: 6060

# 自定义配置
mytest2: zhangsan2

# 配置数据库连接
spring:
  profiles:
    active: prod
  datasource:
    url: jdbc:mysql://127.0.0.1:3306/testdb?characterEncoding=utf8
    username: root
    password: root

相较 properties,代码冗余度降低~ yml 读取配置的⽅式和 properties 相同,使⽤ @Value 注解即可。

 

2.5 yml 配置不同类型及null:

# 字符串
string.value: Hello

# 布尔值,true或false
boolean.value: true
boolean.value1: false

# 整数
int.value: 10
int.value1: 0b1010_0111_0100_1010_1110 # ⼆进制

# 浮点数
float.value: 3.14159
float.value1: 314159e-5 # 科学计数法

# Null,~代表null
null.value: ~

需要注意的是,字符串类型是否带有引号,读取出来是不一样的~~

string:
    str1: Hello \n Spring Boot.
    str2: 'Hello \n Spring Boot.'
    str3: "Hello \n Spring Boot."
@Component
public class ReadYml {
    @Value("${string.str1}")
    private String str1;

    @Value("${string.str2}")
    private String str2;

    @Value("${string.str3}")
    private String str3;
    
    @PostConstruct
    public void postConstruct() {
        System.out.println("string.str1:" + str1);
    System.out.println("string.str2:" + str2);
    System.out.println("string.str3:" + str3);
    }
}

从上述结果可以看出:

只有带有双引号的字符串,转义字符才能被正常解析。对于无引号和单引号的情况,转义字符没有变化的显示出来~

2.6 yml配置对象

我们还可以在 yml 中配置对象,如下配置:

student:
    id: 1
    name: Java
    age: 18

这个时候就不能⽤ @Value 来读取配置中的对象了,此时要使⽤另⼀个注解@ConfigurationProperties 来读取

@Component
@ConfigurationProperties("student")
@Data
public class Student {
    private int id;
    private String name;
    private int age;
    
}

在以上代码中,getter、setter以及toString方法均通过lombok实现。需要注意的是@ConfigurationProperties注解中的内容,需要与配置文件中对象的key相同。

    @Autowired
    private Student student;

    @PostConstruct
    public void postConstruct(){
        System.out.println(student);
    }

想要查看 Spring Boot 更多系统配置项,访问官⽹:官网地址

三、设置不同环境的配置文件

3.1 创建不同环境的配置文件:

  • application-dev.properties
  • application-prod.properties
  • application-dev.yml
  • application-prod.yml
     

3.2 在 application.properties或application.yml 中设置行环境

# 配置数据库连接
spring:
  profiles:
    active: prod

SpringBoot就会自动在运行的时候,加载设置的相关配置文件~

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ansible常见模块的运用

ansible常见模块的运用 一:Ansible简介二:ansible 环境安装部署管理端安装 ansibleansible 目录结构配置主机清单配置密钥对验证 三:ansible 命令行模块1.command 模块在远程主机执行命令,不支持管道,重定向…

LNMP安装

目录 1、LNMP简述: 1.1、概述 1.2、LNMP是一个缩写词,及每个字母的含义 1.3、编译安装与yum安装差异 1.4、编译安装的优点 2、通过LNMP创建论坛 2.1、 安装nginx服务 2.1.1、关闭防火墙 2.1.2、创建运行用户 2.1.3、 编译安装 2.1.4、 优化路…

【C#学习笔记】引用类型(2)

文章目录 ObjectEqualsGetTypeToStringGetHashCode string逐字文本复合格式字符串字符串内插 StringBuilderStringBuilder 的工作原理StringBuilder提供的方法访问字符迭代字符查询字符 dynamic Object 支持 .NET 类层次结构中的所有类,并为派生类提供低级别服务。…

物理机是什么?有什么优势?可以上堡垒机吗?

你知道物理机是什么?有什么优势?可以上堡垒机吗?今天我们就来简单聊聊。 物理机是什么? 物理机是相对于虚拟机而言的对实体计算机的称呼。物理机提供给虚拟机以硬件环境,有时也称为“寄主”或“宿主”。 物理机有什么…

万界星空科技/免费开源MES系统/免费仓库管理

仓库管理(仓储管理),指对仓库及仓库内部的物资进行收发、结存等有效控制和管理,确保仓储货物的完好无损,保证生产经营活动的正常进行,在此基础上对货物进行分类记录,通过报表分析展示仓库状态、…

软件设计师(六)结构化开发方法

结构化方法由结构化分析、结构化设计、结构化程序设计构成,它是一种面向数据流的开发方法。 分类说明结构化分析(SA)根据分解与抽象的原则,按照系统中数据处理的流程,用数据流图来建立系统的功能模型,从而…

7种有效安全的网页抓取方法,如何避免被禁止?

网页抓取是一种从互联网上抓取网页内容的过程,但在网络抓取种相信您也经常遇到障碍?尤其是做跨境业务的,在抓取国外的网站时更有难度。但我们站在您的立场上,提供七种有效的方法来进行网页抓取而不被阻止,最大限度地降…

python可以做哪些小工具,python可以做什么小游戏

大家好,小编来为大家解答以下问题,python可以做什么好玩的,python可以做什么小游戏,今天让我们一起来看看吧! 最近有几个友友问我说有没有比较好玩的Python小项目来练手,于是我找了几个比较有意思的给他们&…

CUDA编程

银河系CUDA编程指南(3)——矩阵乘法的分块实现 银河系CUDA编程指南(3)——矩阵乘法的分块实现 - 知乎0 写在前面前面一节实现了一个朴素的GPU矩阵乘法,效果和使用cublas库差距极大。其中一个原因就是因为对全局存储器 ( global memory) 的访问。全局内存通常使用DR…

亚马逊关键词的作用有哪些?

亚马逊关键词在平台上扮演着重要的作用,涵盖了消费者、卖家和整个平台的多个方面: 1、消费者的作用: 帮助消费者快速找到所需商品:通过输入关键词,消费者可以迅速找到感兴趣的商品,节省时间和精力。 支持…

百分点科技跻身中国智慧应急人工智能解决方案市场前三

近日, 全球领先的IT市场研究和咨询公司IDC发布了《中国智慧应急解决方案市场份额,2022》报告,数据显示,2022年中国智慧应急整体市场为104亿元人民币。其中,智慧应急人工智能解决方案子市场备受关注,百分点科…

day1-牛客67道剑指offer-JZ4 JZ6 JZ7 JZ9 JZ11 JZ69 JZ70 替换空格 斐波那契数列及其变形 左移/右移运算符

文章目录 1. JZ4 二维数组中的查找暴力法右上角往左下角逼近二分查找-左闭右开区间 2. 替换空格3. JZ6 从尾到头打印链表4. JZ7 重建二叉树思路1哈希加速 5. JZ9 用两个栈实现队列6. JZ11 旋转数组的最小数字常规遍历二分法 7. 斐波那契数列动态规划递归 8. JZ69 跳台阶动态规划…

PS - Photoshop 实现涂抹功能 (橡皮擦、图章、吸管、画笔)

欢迎关注我的CSDN:https://spike.blog.csdn.net/ 本文地址:https://spike.blog.csdn.net/article/details/131997323 在 Photoshop 中,橡皮擦工具,以及吸管工具和画笔工具可以配合使用,实现涂抹功能,再通过…

AMEYA360:瑞萨电子MCU和MPU产品线将支持Microsoft Visual Studio Code

全球半导体解决方案供应商瑞萨电子宣布其客户现可以使用Microsoft Visual Studio Code(VS Code)开发瑞萨全系列微控制器(MCU)和微处理器(MPU)。瑞萨已为其所有嵌入式处理器开发了工具扩展,并将其…

zookeeper入门学习

zookeeper入门学习 zookeeper应用场景 分布式协调组件 客户端第一次请求发给服务器2,将flag值修改为false,第二次请求被负载均衡到服务器1,访问到的flag也会是false 一旦有节点发生改变,就会通知所有监听方改变自己的值&#…

ConcurrentHashMap 的简单介绍

ConcurrentHashMap是Java集合框架中的一个并发容器,它是线程安全的哈希表的实现。它被设计为比Hashtable和SynchronizedMap(通过使用同步方法或块来保证线程安全)更高效和可扩展的替代品。 ConcurrentHashMap具有以下特点: 线程…

Docker安装RabbitMQ镜像

步骤1:拉取镜像 docker pull rabbitmq:management 步骤2:运行 docker run -d –-name rabbit -e RABBITMQ_DEFAULT_USERadmin -e RABBITMQ_DEFAULT_PASSadmin -p 15672:15672 -p 5672:5672 -p 25672:25672 -p 61613:61613 -p 1883:1883 rabbitmq:mana…

Windows同时安装两个版本的JDK并随时切换,以JDK6和JDK8为例,并解决相关存在的问题(亲测有效)

Windows同时安装两个版本的JDK并随时切换,以JDK6和JDK8为例,并解决相关存在的问题(亲测有效) 1.下载不同版本JDK 这里给出JDK6和JDK的百度网盘地址,具体安装过程,傻瓜式安装即可。 链接:http…

Redis学习总结

Redis学习总结 文章目录 Redis学习总结Radis基本介绍docker的安装基本数据结构通用命令字符型key的层次结构Hash类型Listset sortedset集合redis的java客户端jedis的使用jedis连接池的配置 SpringDataRedis自定义redistemplate的序列化与反序列化方式stringtemplate的使用 redi…

windows创建占用特定端口程序

默认情况下,远程桌面使用的是3389端口。如果您想将远程桌面端口更改为8005,以达到模拟程序占用端口8005的情况,可以执行以下操作: 如执行以下命令,则1,2,3步相同操作可以跳过,直接往…