【SpringBoot3学习 | 第1篇】SpringBoot3介绍与配置文件

news2024/11/25 2:45:09

在这里插入图片描述

文章目录

      • 前言
    • 一. 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: 8081
      servlet:
        context-path: /huahua
    
    hky:
      info:
        name: hekaiyan  #此时,冒号属性后面必须有一个空格
        age: 18
        anims:          #数组
          - 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: 8081
      servlet:
        context-path: /huahua
    
    hky:
      info:
        name: hekaiyan  #此时,冒号属性后面必须有一个空格
        age: 18
        anims:          #数组
          - dog
          - cat
    
    
    spring:
      profiles:
        active: test,dev  # 激活外部配置
                          # 外部配置的 key 与 application 的 key 重复,外部配置覆盖
    
  • controller类

    @RestController
    @RequestMapping("user")
    public class HelloController {
    
        @Autowired
        private User user;
    
        @GetMapping("show")
        public User show(){
            return user;
        }
    
    }
    
  • 测试显示
    在这里插入图片描述

  • :如果设置了spring.profiles.active,并且和application有重叠属性,以active设置优先

  • 也可使用 properties 以及 命令行参数 实现多环境配置

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

溶解氧(DO)理论指南(1)

转载自梅特勒官网资料&#xff0c;仅用于学习交流&#xff0c;侵权则删&#xff01; 溶解氧理论指南 1 溶解氧(DO)原理1.1 溶解氧和分压1.2 氧气在水中的溶解度1.3 溶解氧对生物的重要性1.4 溶解氧对工业的重要性 1 溶解氧(DO)原理 氧是宇宙中第三大常见元素&#xff0c;也是…

【C++】 解决 C++ 语言报错:Stack Overflow

文章目录 引言 栈溢出&#xff08;Stack Overflow&#xff09;是 C 编程中常见且严重的错误之一。栈溢出通常发生在程序递归调用过深或分配过大的局部变量时&#xff0c;导致栈空间耗尽。栈溢出不仅会导致程序崩溃&#xff0c;还可能引发不可预测的行为。本文将深入探讨栈溢出…

1-2 什么是自然语言处理

1-2 什么是自然语言处理 主目录点这里 自然语言处理是计算机学科、人工智能与语言学领域的一个交叉学科&#xff0c;主要研究如何让计算机能够理解、处理、生成和模拟人类语言的能力&#xff0c;从而实现与人类进行自然语言对话的能力。 如上图&#xff0c;你好通过自然语言处…

2024年7月6日 十二生肖 今日运势

小运播报&#xff1a;2024年7月6日&#xff0c;星期六&#xff0c;农历六月初一 &#xff08;甲辰年庚午月辛未日&#xff09;&#xff0c;法定节假日。 红榜生肖&#xff1a;猪、马、兔 需要注意&#xff1a;狗、鼠、牛 喜神方位&#xff1a;西南方 财神方位&#xff1a;正…

初学Spring之静态代理模式

代理模式&#xff08;不改变业务原有功能&#xff09;是 Spring AOP 的底层&#xff0c;分为静态代理、动态代理 静态代理&#xff1a; 抽象角色&#xff1a;一般会使用接口或抽象类来解决 真实角色&#xff1a;被代理的角色&#xff08;房东&#xff09; 代理角色&#xf…

uniapp中实现跳转链接到游览器(安卓-h5)

uniapp中实现跳转链接到游览器&#xff08;安卓-h5&#xff09; 项目中需要做到跳转到外部链接&#xff0c;网上找了很多都不是很符合自己的要求&#xff0c;需要编译成app后是跳转到游览器打开链接&#xff0c;编译成web是在新窗口打开链接。实现的代码如下&#xff1a; 效果&…

matlab 绘制高等数学中的二维函数示例

matlab 绘制高等数学中的二维函数示例 绘制高等数学中的二维函数示例绘制结果 绘制高等数学中的二维函数示例 clc,clear,close all; % 定义方程 eqn (x, y) (x.^2 y.^2).^3 - y.^4;% 绘制方程曲线和坐标轴 ezplot(eqn, [-2, 2, -2, 2]) hold on % 在同一图形中保持绘图% 绘…

YOLO V7项目使用

YOLO V7项目使用 根据官方论文中提供的项目地址&#xff1a;使用git clone将项目下载到本地。 https://github.com/WongKinYiu/yolov7 git clone https://github.com/WongKinYiu/yolov7 使用pycharm打开项目&#xff0c;根据官方提供的requirement.txt文件下载项目启动所需要的…

linux深度deepin基于rsync和apt-mirror同步软件源及构建本地内网源

目录 一、rsync方式二、apt-mirror方式1.安装apt-mirror2.配置apt-mirror(/etc/apt/mirror.list)3.新建存放目录开始下载 3.发布mirror站点 一、rsync方式 参考官方文档地址&#xff1a; https://www.deepin.org/index/docs/wiki/05_HOW-TO/08_%E9%95%9C%E5%83%8F%E5%8A%A0%E9%…

05.C1W4.Machine Translation and Document Search

目录 OverviewWhat you’ll be able to do!Learning Objectives Transforming word vectorsOverview of TranslationTransforming vectors Align word vectorsSolving for RFrobenius normFrobenius norm squaredGradient K nearest neighborsFinding the translationNearest n…

模拟,CF 570C - Replacement

一、题目 1、题目描述 2、输入输出 2.1输入 2.2输出 3、原题链接 570C - Replacement 二、解题报告 1、思路分析 1、长为cnt的连续串的最小操作次数为cnt - 1 2、每次将一个非. 替换为. f要么增加1要么增加2 只有前后都是 . 的时候会增加2 同理&#xff0c;当我们将一…

World of Warcraft [CLASSIC] Talent Tree

World of Warcraft [CLASSIC] Talent Tree 天赋树模拟器 01&#xff09;初始化整个页面&#xff0c;选择游戏职业&#xff0c;初始化3个天赋树 02&#xff09;初始化天赋树结构&#xff0c;层次为N层 03&#xff09;每层有4个技能&#xff0c;设置可显示&#xff0c;设置隐藏…

遗漏知识点

什么是RAII&#xff1f; RAII是Resource Acquisition Is Initialization&#xff08;wiki上面翻译成 “资源获取就是初始化”&#xff09;的简称&#xff0c;是C语言的一种管理资源、避免泄漏的惯用法。利用的就是C构造的对象最终会被销毁的原则。RAII的做法是使用一个对象&am…

解决中型组织三个人力资源基础问题的方法

中型企业 (通常在700 - 5000名员工之间)是从中小企业发展起来的&#xff0c;但不称为大型企业。虽然个别市场取得了成功&#xff0c;但到2023年&#xff0c;中端市场经历了一个艰难的结局&#xff0c;受到了更广泛的经济挑战的影响。然而&#xff0c;它仍然具有灵活性和乐观性&…

限制泛型类型、使用类型通配符和继承泛型类(接口)

文章目录 前言一、限制泛型类可用类型二、使用类型通配符&#xff08;&#xff1f;&#xff09;三、继承泛型类与实现泛型接口总结 前言 本篇介绍泛型类的更深层次的用法&#xff0c;限制泛型定义数据类型的范围、使用类型通配符、继承泛型类与实现泛型接口。 一、限制泛型类可…

winform2

12.TabControl 导航控制条 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; namespace zhiyou_…

爆!Java高级特性之Stream API详解

爆&#xff01;Java高级特性之Stream API详解 Java 8引入的Stream API可以说是一个革命性的特性,让我们告别了又臭又长的for循环,迎来了函数式编程的春天。今天就让我们来一起深入了解这个让人又爱又恨的Stream API吧! 什么是Stream? Stream就像一个高级的迭代器,允许我们以…

应用了网络变压器的PC网卡连接转换器后不好连网,有掉线现象,但外接路由器无问题,可能是什么原因?

Hqst盈盛&#xff08;华强盛&#xff09;电子导读&#xff1a;今天分享的是应用了网络变压器的PC网卡连接转换器后不好连网&#xff0c;有掉线现象&#xff0c;但外接路由器无问题&#xff0c;可能是什么原因呢&#xff1f;如何解决呢&#xff1f; 首先&#xff0c;我们要了解传…

无人机常见故障及维修方法详解

一、无人机故障识别与处理原则 无人机故障识别是维修的第一步&#xff0c;要求操作人员具备基本的无人机系统知识和故障识别能力。在识别故障时&#xff0c;应遵循“先易后难、先外后内、先软件后硬件”的原则。一旦识别出故障&#xff0c;应立即停止飞行&#xff0c;避免进一…

【VUE基础】VUE3第三节—核心语法之computed、watch、watcheffect

computed 接受一个 getter 函数&#xff0c;返回一个只读的响应式 ref 对象。该 ref 通过 .value 暴露 getter 函数的返回值。它也可以接受一个带有 get 和 set 函数的对象来创建一个可写的 ref 对象。 创建一个只读的计算属性 ref&#xff1a; <template><div cl…