【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修饰器的函数式编程。 那这种模式呢可以很轻松的把一些函数啊装配到另外一些函数上。 让你的代码呢更加简单,也可以让一些小功能性的代码复用性更高。 让代码中的函数呢可以…...

Java实习手册(小白也看得懂)
秃狼说 距离俺发布的学习路线已经六个月了,那我给小伙伴的学习周期是四五个月左右,我相信大多的小伙伴已经学习的差不多了。正好赶上暑期实习的阶段,在暑期找到实习就成为暑期的头等大事。 实习经验在校招的起到决定性的作用,所…...

Elasticsearch 分析器(Analyzer)的作用和配置
在Elasticsearch中,分析器(Analyzer)是文本处理的核心组件,它负责将输入的文本转换为可用于搜索和索引的词项(tokens)。这一过程涉及多个步骤,包括字符过滤、分词和标记过滤,共同决定…...

SpringBoot(一)创建一个简单的SpringBoot工程
Spring框架常用注解简单介绍 SpringMVC常用注解简单介绍 SpringBoot(一)创建一个简单的SpringBoot工程 SpringBoot(二)SpringBoot多环境配置 SpringBoot(三)SpringBoot整合MyBatis SpringBoot(四…...

简述Vue中的数据双向绑定原理
Vue中的数据双向绑定原理是Vue框架的核心特性之一,它通过数据劫持结合发布者-订阅者模式来实现。下面将详细阐述Vue中数据双向绑定的原理,并尽量按照清晰的结构进行归纳: 一、数据劫持 使用Object.defineProperty(): Vue在组件…...

C++STL函数对象的应用
STL函数对象 文章目录 STL函数对象1.基本概念2.使用方法1. 简单函数对象示例2. 函数对象作为算法参数3. Lambda表达式作为函数对象 2.一元谓词和二元谓词1.一元谓词2.二元谓词3.总结 3.算术仿函数1.使用示例2.Lambda表达式的替代 4.关系仿函数5.逻辑仿函数 C中的函数对象&#…...

AJAX-day1:
注:文件布局: 一、AJAX的概念: AJAX是浏览器与服务器进行数据通信的技术 >把数据变活 二、AJAX的使用: 使用axios库,与服务器进行数据通信 基于XMLHttpRequest封装,代码简单 Vue,React项目使用 学习…...

昆虫学(书籍学习资料)
包括昆虫分类(上下册)、昆虫生态大图鉴等书籍资料。...

springboot + mybatis 多数据源切换
参考的b站博主写的 配置文件: spring:datasource:db1:jdbc-url: jdbc:mysql://localhost:3306/interview_database?useUnicodetrue&characterEncodingutf-8&useSSLfalseusername: rootpassword: 12345driver-class-name: com.mysql.cj.jdbc.Driverdb2:jdbc-url: jdbc…...

windows电脑网络重置后wifi列表消失怎么办?
我们的电脑网络偶尔会出现异常,我们通常会下意识选择网络诊断,运行完诊断后一般会让我们选择重置网络,然而,重置后wifi列表突然消失,无法愉快地上网了,找了一圈,都说是更改适配器选项࿰…...

Python + 在线 + 文生音,音转文(中文文本转为英文语音,语音转为中文文本)
开源模型 平台:https://huggingface.co/ars-语言转文本: pipeline("automatic-speech-recognition", model"openai/whisper-large-v3", device0 ) hf: https://huggingface.co/openai/whisper-large-v3 github: https://github.com/openai/wh…...