当前位置: 首页 > 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;也可以让一些小功能性的代码复用性更高。 让代码中的函数呢可以…...

Java实习手册(小白也看得懂)

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

Elasticsearch 分析器(Analyzer)的作用和配置

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

SpringBoot(一)创建一个简单的SpringBoot工程

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

简述Vue中的数据双向绑定原理

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

C++STL函数对象的应用

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

AJAX-day1:

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

昆虫学(书籍学习资料)

包括昆虫分类&#xff08;上下册&#xff09;、昆虫生态大图鉴等书籍资料。...

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列表消失怎么办?

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

Python + 在线 + 文生音,音转文(中文文本转为英文语音,语音转为中文文本)

开源模型 平台&#xff1a;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…...