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

【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.propertiesapplication.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.yaml

    hky: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、服务提供者 &#xff08;1&#xff09;启动类添加注解EnableDubbo &#xff08;2&#xff09;服务类添加注解DubboService &#xff08;3&#xff09;配置文件…...

昇思25天学习打卡营第12天| 基于MindNLP+MusicGen生成自己的个性化音乐

之前都是看图文类的东西&#xff0c;今天体验一点不一样的。来点听力的内容。 mindspore有音乐生成模型MusicGen&#xff0c;MusicGen支持两种生成模式&#xff1a;贪心&#xff08;greedy&#xff09;和采样&#xff08;sampling&#xff09;。在实际执行过程中&#xff0c;采…...

代理设计模式和装饰器设计模式的区别

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

[Microsoft Office]Word设置页码从第二页开始为1

目录 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双击页码&#xff0c;出现“页脚”提示 第四步&#xff1a;选中“首页不同” 第一步&#xff1a;设置页码格式 第二步&#xff1a;设置“起始页码”为0 第三步&#xff1a;双…...

【C++】日期类

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

力扣热100 滑动窗口

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

三万字带你一遍跑通uer

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

Ubuntu24.04LTS基础软件下载

librewolf: deb文件link 作用&#xff1a;访问github&#xff0c;无痕浏览&#xff0c;这个速度&#xff0c;不指望了 vscodium: 从deb安装&#xff0c;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从入门到精通系列 前言&#xff1a;笔者从事于NLPLLM的对话智能机器人的相关行业&#xff0c;现在的大模型的技术日新月异&#xff0c;传统的NLP业务显然是要被淘汰的&#xff0c;那么这也是我着笔写这一系列文章的初衷。本系列将由浅到深&#xff0c;结合实际代码案例&…...

用数组手搓一个小顶堆

堆默认从数组下标为1开始存储。 const int N201000; int heap[N]; int len; 插入操作&#xff1a; 将元素插入到堆的末尾位置向上调整。 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技术目前应用广泛&#xff0c;但随着科技的发展和网络环境的变化&#xff0c;代理IP也将面临一些新的挑战。让我们一起来看看这些挑战是什么吧&#xff01; 1. 更严格的网络封锁和检测 现代社会各行各业都在飞速发展&…...

FineBI在线学习资源-数据处理

FineBI在线学习资源汇总&#xff1a; 学习资源 视频课程 帮助文档 问答 数据处理学习文档&#xff1a; 相关资料&#xff1a; 故事背景概述-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&#xff1a; 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

本篇文章&#xff0c;笔者将分享直播平台如何开发并接入美颜SDK的技术细节与步骤。 一、选择合适的美颜SDK 首先&#xff0c;选择一款适合的美颜SDK非常重要。市面上有很多优秀的美颜SDK供应商&#xff0c;选择时应考虑以下因素&#xff1a; 功能丰富性&#xff1a;支持美白…...

左耳听风_114_113_Go编程模式修饰器

你好&#xff0c;我是陈浩&#xff0c;我名多尔多house.之前呢我写过一篇文章叫做python修饰器的函数式编程。 那这种模式呢可以很轻松的把一些函数啊装配到另外一些函数上。 让你的代码呢更加简单&#xff0c;也可以让一些小功能性的代码复用性更高。 让代码中的函数呢可以…...

腾讯地图API实战:5分钟搞定经纬度录入与地图选点功能(Vue版)

腾讯地图API实战&#xff1a;5分钟搞定经纬度录入与地图选点功能&#xff08;Vue版&#xff09; 在当今的Web开发中&#xff0c;地图功能已成为许多应用的标配需求。无论是电商平台的店铺定位&#xff0c;还是社交应用的位置分享&#xff0c;甚至是企业内部系统的区域管理&…...

从安全卫士到AI指挥官:周鸿祎的“AI突围”实录!

2026年3月27日&#xff0c;北京——在360总部楼下&#xff0c;一张临时搭建的长桌上&#xff0c;周鸿祎身穿印有“AI世界”的黑色工装马甲&#xff0c;手握键盘&#xff0c;亲自为现场观众“装龙虾”。这幅画面不仅让人恍惚回到十几年前的中关村&#xff0c;也标志着一场关于AI…...

SmolVLA效果展示:三视角图像对齐误差对最终动作精度影响分析

SmolVLA效果展示&#xff1a;三视角图像对齐误差对最终动作精度影响分析 1. 项目概述 SmolVLA是一个专门为经济实惠的机器人技术设计的紧凑高效视觉-语言-动作模型。这个模型最大的特点是能够在有限的硬件资源下实现高质量的机器人控制&#xff0c;让更多开发者和研究者能够接…...

JS知识点汇总(十九)--ajax

1. 说说ajax的原理&#xff0c;以及如何实现&#xff1f; AJAX 全称(Async Javascript and XML) 即异步的 JavaScript 和 XML&#xff0c;是一种创建交互式网页应用的网页开发技术&#xff0c;可以在不重新加载整个网页的情况下&#xff0c;与服务器交换数据&#xff0c;并且更…...

如何为SortableJS实现高效自动化测试:拖拽功能的完整测试指南

如何为SortableJS实现高效自动化测试&#xff1a;拖拽功能的完整测试指南 【免费下载链接】Sortable Reorderable drag-and-drop lists for modern browsers and touch devices. No jQuery or framework required. 项目地址: https://gitcode.com/gh_mirrors/so/Sortable …...

在六亩半,春天不是日历上的数字,而是泥土间的青草香

当城市里的春天还停留在气温起伏的天气预报里&#xff0c;六亩半手作文创园的春意&#xff0c;早已从土地深处探出头来。那是荠菜嫩芽拱开泥土的力道&#xff0c;是柳条抽出新绿的柔软&#xff0c;是孩子们蹲在田埂上、指尖沾满青草汁液的鲜活记忆。在这里&#xff0c;春天不是…...

告别Electron臃肿!用Tauri 2.0 + Rust打造你的第一个轻量级桌面应用(附完整项目结构解析)

从Electron到Tauri 2.0&#xff1a;用Rust重构现代桌面应用开发范式 当Electron应用体积膨胀到200MB起步时&#xff0c;我们不得不重新思考桌面开发的未来。Tauri 2.0的出现绝非偶然——这是前端开发者对性能与体验的集体觉醒。本文将带你深入这个基于Rust的轻量级框架&#xf…...

OpenClaw技能分享:GLM-4.7-Flash驱动的邮件自动处理系统

OpenClaw技能分享&#xff1a;GLM-4.7-Flash驱动的邮件自动处理系统 1. 为什么需要自动化邮件处理 每天早晨打开邮箱&#xff0c;看到堆积如山的未读邮件总让人头皮发麻。作为一个小团队的负责人&#xff0c;我经常需要处理客户咨询、内部沟通、会议邀请等各种类型的邮件。最…...

本地图片检索新方案:ImageSearch完全使用指南

本地图片检索新方案&#xff1a;ImageSearch完全使用指南 【免费下载链接】ImageSearch 基于.NET8的本地硬盘千万级图库以图搜图案例Demo和图片exif信息移除小工具分享 项目地址: https://gitcode.com/gh_mirrors/im/ImageSearch 当你的电脑中存储了成千上万张图片&…...

别光看原理了!用STM32F407从零撸一个四轴飞控代码(附完整工程)

用STM32F407从零构建四轴飞控代码实战指南 当你在论坛上看到别人分享的无人机飞行视频&#xff0c;是否也曾心动想亲手打造一套自己的飞控系统&#xff1f;市面上大多数教程止步于理论讲解&#xff0c;真正落实到代码层面的少之又少。本文将带你用STM32F407开发板&#xff0c;…...