【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件
文章目录
- 前言
- 一. SpringBoot3介绍
- 1.1 SpringBoot项目创建
- 1. 创建Maven工程
- 2. 添加依赖(springboot父工程依赖 , web启动器依赖)
- 3. 编写启动引导类(springboot项目运行的入口)
- 4. 编写处理器Controller
- 5. 启动项目
- 1.2 项目理解
- 1. 依赖不需要写版本原因
- 2. 启动器(Starter)
- 3. @SpringBootApplication注解
- 二. SpringBoot配置文件
- 2.1 统一配置管理
- 2.2 properties配置文件使用
- 2.3 yaml配置文件使用
- 2.4 批量配置文件注入
- 2.5 多环境配置和使用
前言
使用XML、注解、Java配置类、以及他们的混合用法,让人觉得配置文件过于复杂和繁琐!
SpringBoot 帮助简单、快速地创建一个独立的、生产级别的 Spring 应用(说明:SpringBoot底层是Spring),大多数 SpringBoot 应用只需要编写少量配置即可快速整合 Spring 平台以及第三方技术
一. SpringBoot3介绍
1.1 SpringBoot项目创建
1. 创建Maven工程
2. 添加依赖(springboot父工程依赖 , web启动器依赖)
-
springboot父工程依赖
<parent><!-- spring-boot --><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>3.0.5</version> </parent>
-
web启动器依赖
<dependencies><!-- 导入对应启动器 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>
3. 编写启动引导类(springboot项目运行的入口)
package com.hky;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;/*** @author hky* @date ${DATE}* @Description*/// 1. 包含配置类 @SpringBootConfiguration// 2. 自动加载配置 @EnableAutoConfiguration// 3. @ComponentScan 默认扫描当前类所在包,子包的注解@SpringBootApplication //启动类public class Main {public static void main(String[] args) {SpringApplication.run(Main.class,args);//自动创建ioc容器,启动tomcat服务器软件}}
4. 编写处理器Controller
package com.hky.controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RestController;/*** @author hky* @date 2024/6/28* @Description*/@RestController@RequestMapping("hello")public class HelloController {@GetMapping("boot")public String hello(){return "hello springboot3!!";}}
5. 启动项目
点击启动类,启动项目
1.2 项目理解
1. 依赖不需要写版本原因
- 每个boot项目都有一个父项目
spring-boot-starter-parent
- parent的父项目是
spring-boot-dependencies
,父项目把所有常见的jar的依赖版本都声明好了。
2. 启动器(Starter)
Starter的是一组预定义的依赖项集合
作用:简化Spring应用程序的配置和构建过程,以便在启动应用程序时自动引入所需的库、配置和功能。
- 使用Starter:在 pom.xml 中添加所需的Starter依赖,Spring Boot会自动处理依赖管理和配置。
- spring boot提供的全部启动器地址
3. @SpringBootApplication注解
- @SpringBootApplication注解是Spring Boot框架中的核心注解,它的主要作用是
简化和加速Spring Boot应用程序的配置和启动过程
。 - 其中包含:
(1)
@EnableAutoConfiguration
注解:启用Spring Boot的自动配置机制
(2)@ComponentScan
注解:自动扫描并加载应用程序中的组件
(3)@Configuration
注解:将被标注的类声明为配置类。配置类可以包含Spring框架相关的配置、Bean定义,以及其他的自定义配置。使得配置和启动可以同时发生。
二. SpringBoot配置文件
2.1 统一配置管理
SpringBoot 进行统一的配置管理,任何参数(端口号、项目根路径、数据库连接信息等等)都集中到一个固定位置和命名的配置文件(
application.properties
或application.yml
)中!
- 配置文件应该放置在Spring Boot工程的src/main/resources目录下
- 命名:application 后缀 .properties / .yaml / .yml
- 若同时存在application.properties | application.yml(.yaml) , properties的优先级更高。
2.2 properties配置文件使用
-
在resources文件夹下创建一个application.properties 配置文件
配置文件内用key=值
的形式书写配置文件\server.port=8081 server.servlet.context-path=/huahua# 自定义 hky.name=hekaiyan hky.age=18
-
读取配置文件
使用@Value(“${hky.name}”)@RestController @RequestMapping("hello") public class HelloController {@Value("${hky.name}")private String name;@GetMapping("boot")public String hello(){System.out.println(name);return "hello springboot3!!";} }
2.3 yaml配置文件使用
-
YAML:一种基于
层次结构
的数据序列化格式,旨在提供一种易读、人类友好的数据表示方式。 -
YAML配置文件的扩展名是yaml 或 yml
server:port: 8081servlet:context-path: /huahuahky:info:name: hekaiyan #此时,冒号属性后面必须有一个空格age: 18anims: #数组- dog- cat
2.4 批量配置文件注入
@ConfigurationProperties
:可以将一些配置属性批量注入到bean对象。
- 创建实体类,在实体类中添加属性和注解(属性名称和配置文件中的key必须要保持一致才可以注入成功)
package com.hky.pojo;import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.stereotype.Controller;import java.util.List;/*** @author hky* @Description** 读取配置文件信息:* 1. @Value读取* 只能读取一个值,不能读取数组* 2. 批量读取 @ConfigurationProperties(prefix = "")*/ @Data @Component @ConfigurationProperties(prefix = "hky.info") public class User {private String name;private String age;private List<String> anims;}
2.5 多环境配置和使用
Spring Boot中,可以使用多环境配置来根据不同的运行环境(如开发、测试、生产)加载不同的配置。
-
通过yaml方式实现多环境配置
application-dev.yamlhky:info:name: hekaili
application-test.yaml
hky:info:age: 20
application.yaml
server:port: 8081servlet:context-path: /huahuahky:info:name: hekaiyan #此时,冒号属性后面必须有一个空格age: 18anims: #数组- dog- catspring:profiles:active: test,dev # 激活外部配置# 外部配置的 key 与 application 的 key 重复,外部配置覆盖
-
controller类
@RestController @RequestMapping("user") public class HelloController {@Autowiredprivate User user;@GetMapping("show")public User show(){return user;}}
-
测试显示
-
注
:如果设置了spring.profiles.active,并且和application有重叠属性,以active设置优先。 -
也可使用
properties
以及命令行参数
实现多环境配置
相关文章:

【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件
文章目录 前言 一. SpringBoot3介绍1.1 SpringBoot项目创建1. 创建Maven工程2. 添加依赖(springboot父工程依赖 , web启动器依赖)3. 编写启动引导类(springboot项目运行的入口)4. 编写处理器Controller5. 启动项目 1.2 项目理解1. 依赖不需要写版本原因2. 启动器(Starter)3. Sp…...

SpringBoot整合Dubbo的快速使用教程
目录 一、什么是Dubbo? 二、SpringBoot整合Dubbo 1、父工程引入依赖 2、各个Dubbo服务子模块引入依赖 3、服务提供者 (1)启动类添加注解EnableDubbo (2)服务类添加注解DubboService (3)配置文件…...
昇思25天学习打卡营第12天| 基于MindNLP+MusicGen生成自己的个性化音乐
之前都是看图文类的东西,今天体验一点不一样的。来点听力的内容。 mindspore有音乐生成模型MusicGen,MusicGen支持两种生成模式:贪心(greedy)和采样(sampling)。在实际执行过程中,采…...

代理设计模式和装饰器设计模式的区别
代理设计模式: 作用:为目标(原始对象)增加功能(额外功能,拓展功能) 三种经典应用场景: 1:给原始对象增加额外功能(spring添加事务,Mybatis通过代理实现缓存功能等等) 2:远程代理(网络通信,输出传输(RPC,D…...

[Microsoft Office]Word设置页码从第二页开始为1
目录 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双击页码,出现“页脚”提示 第四步:选中“首页不同” 第一步:设置页码格式 第二步:设置“起始页码”为0 第三步:双…...

【C++】日期类
鼠鼠实现了一个日期类,用来练习印证前几篇博客介绍的内容!! 目录 1.日期类的定义 2.得到某年某月的天数 3.检查日期是否合法 4.(全缺省)构造函数 5.拷贝构造函数 6.析构函数 7.赋值运算符重载 8.>运算符重…...

力扣热100 滑动窗口
这里写目录标题 3. 无重复字符的最长子串438. 找到字符串中所有字母异位词 3. 无重复字符的最长子串 左右指针left和right里面的字符串一直是没有重复的 class Solution:def lengthOfLongestSubstring(self, s: str) -> int:# 左右指针leftright0ans0#初始化结果tablecolle…...

三万字带你一遍跑通uer
三万字带你一遍跑通uer 参考文档 今天给大家介绍个非常强大的项目uer,集成了许多可以做自然语言的东西,效果的话也非常好,很适合企业级的应用! 1. 先将项目uer从github拉取下来(zip或git都ok) 2. 用pycha…...

Ubuntu24.04LTS基础软件下载
librewolf: deb文件link 作用:访问github,无痕浏览,这个速度,不指望了 vscodium: 从deb安装,ubuntu sudo dpkg -i xxx.debpaste-image 插件替代 markdown wps: libreoffice: 替换USTC源 sudo nano /etc/apt/sourc…...
SQLAlchemy配置连接多个数据库
1.定义配置项 首先定义两个数据库的配置信息 # PostgreSQL database configuration DB_USERNAMEpostgres DB_PASSWORDpassord DB_HOST127.0.0.1 DB_PORT5432 DB_DATABASEtest# mysql database configuration DB_USERNAME_MYSQLroot DB_PASSWORD_MYSQLpassword DB_HOST_MYSQL127…...
NLP+LLM从入门到精通系列
NLPLLM从入门到精通系列 前言:笔者从事于NLPLLM的对话智能机器人的相关行业,现在的大模型的技术日新月异,传统的NLP业务显然是要被淘汰的,那么这也是我着笔写这一系列文章的初衷。本系列将由浅到深,结合实际代码案例&…...
用数组手搓一个小顶堆
堆默认从数组下标为1开始存储。 const int N201000; int heap[N]; int len; 插入操作: 将元素插入到堆的末尾位置向上调整。 void up(int k){while(k>1&&heap[k/2]>heap[k]){swap(heap[k],heap[k/2]);k/2;} } //len为当前存在元素长度 void Inser…...

【Linux开发】基于ALSA库实现音量调节
基于ALSA库实现音量调节 ALSA库实现音量调节1、使用alsamixer工具查看音频接口2、完整代码2.1、snd_mixer_open2.2、snd_mixer_attach、2.3、snd_mixer_selem_register2.4、snd_mixer_load2.5、snd_mixer_first_elem/snd_mixer_elem_next2.6、snd_mixer_selem_get_playback_vol…...
代理IP在未来将面临哪些挑战?
今天我们来聊聊代理IP在未来可能会面临的挑战。虽然代理IP技术目前应用广泛,但随着科技的发展和网络环境的变化,代理IP也将面临一些新的挑战。让我们一起来看看这些挑战是什么吧! 1. 更严格的网络封锁和检测 现代社会各行各业都在飞速发展&…...

FineBI在线学习资源-数据处理
FineBI在线学习资源汇总: 学习资源 视频课程 帮助文档 问答 数据处理学习文档: 相关资料: 故事背景概述-https://help.fanruan.com/finebi6.0/doc-view-1789.html 基础表处理-https://help.fanruan.com/finebi6.0/doc-view-1791.html …...
【代码随想录算法训练营第37期 第四十五天 | LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III】
代码随想录算法训练营第37期 第四十五天 | LeetCode198.打家劫舍、213.打家劫舍II、337.打家劫舍III 一、198.打家劫舍 解题代码C: class Solution { public:int rob(vector<int>& nums) {if (nums.size() 0) return 0;if (nums.size() 1) return num…...
Elasticsearch查询上下文和_source
查询上下文 {"took": 1,"timed_out": false,"_shards": {"total": 1,"successful": 1,"skipped": 0,"failed": 0},"hits": {"total": {"value": 1,"relation"…...
golang实现网卡流量监控
获取当前时刻一分钟前的网卡流量排序 package mainimport ("fmt""github.com/mackerelio/go-osstat/network""log""net/http""sort""strconv""time" )var arr []map[string]int var arr2 []map[string]…...

技术分享:直播平台如何开发并接入美颜SDK
本篇文章,笔者将分享直播平台如何开发并接入美颜SDK的技术细节与步骤。 一、选择合适的美颜SDK 首先,选择一款适合的美颜SDK非常重要。市面上有很多优秀的美颜SDK供应商,选择时应考虑以下因素: 功能丰富性:支持美白…...
左耳听风_114_113_Go编程模式修饰器
你好,我是陈浩,我名多尔多house.之前呢我写过一篇文章叫做python修饰器的函数式编程。 那这种模式呢可以很轻松的把一些函数啊装配到另外一些函数上。 让你的代码呢更加简单,也可以让一些小功能性的代码复用性更高。 让代码中的函数呢可以…...

使用分级同态加密防御梯度泄漏
抽象 联邦学习 (FL) 支持跨分布式客户端进行协作模型训练,而无需共享原始数据,这使其成为在互联和自动驾驶汽车 (CAV) 等领域保护隐私的机器学习的一种很有前途的方法。然而,最近的研究表明&…...
Leetcode 3577. Count the Number of Computer Unlocking Permutations
Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接:3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯,要想要能够将所有的电脑解锁&#x…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)
可以使用Sqliteviz这个网站免费编写sql语句,它能够让用户直接在浏览器内练习SQL的语法,不需要安装任何软件。 链接如下: sqliteviz 注意: 在转写SQL语法时,关键字之间有一个特定的顺序,这个顺序会影响到…...

基于Docker Compose部署Java微服务项目
一. 创建根项目 根项目(父项目)主要用于依赖管理 一些需要注意的点: 打包方式需要为 pom<modules>里需要注册子模块不要引入maven的打包插件,否则打包时会出问题 <?xml version"1.0" encoding"UTF-8…...

全志A40i android7.1 调试信息打印串口由uart0改为uart3
一,概述 1. 目的 将调试信息打印串口由uart0改为uart3。 2. 版本信息 Uboot版本:2014.07; Kernel版本:Linux-3.10; 二,Uboot 1. sys_config.fex改动 使能uart3(TX:PH00 RX:PH01),并让boo…...

Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习)
Aspose.PDF 限制绕过方案:Java 字节码技术实战分享(仅供学习) 一、Aspose.PDF 简介二、说明(⚠️仅供学习与研究使用)三、技术流程总览四、准备工作1. 下载 Jar 包2. Maven 项目依赖配置 五、字节码修改实现代码&#…...

JVM虚拟机:内存结构、垃圾回收、性能优化
1、JVM虚拟机的简介 Java 虚拟机(Java Virtual Machine 简称:JVM)是运行所有 Java 程序的抽象计算机,是 Java 语言的运行环境,实现了 Java 程序的跨平台特性。JVM 屏蔽了与具体操作系统平台相关的信息,使得 Java 程序只需生成在 JVM 上运行的目标代码(字节码),就可以…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
Java毕业设计:WML信息查询与后端信息发布系统开发
JAVAWML信息查询与后端信息发布系统实现 一、系统概述 本系统基于Java和WML(无线标记语言)技术开发,实现了移动设备上的信息查询与后端信息发布功能。系统采用B/S架构,服务器端使用Java Servlet处理请求,数据库采用MySQL存储信息࿰…...
Git常用命令完全指南:从入门到精通
Git常用命令完全指南:从入门到精通 一、基础配置命令 1. 用户信息配置 # 设置全局用户名 git config --global user.name "你的名字"# 设置全局邮箱 git config --global user.email "你的邮箱example.com"# 查看所有配置 git config --list…...