SpringBoot基础 第一天

news2024/12/22 22:35:18

SpringBoot配置的文件名是固定的:application.yml  application.properties

YAML:以数据为中心 比Json  xml更适合做配置文件

YAML语法:

1 字面量:普通值(字符串 布尔值 数字)

        (1) k: v

        (2) " "不会转义  ' '会转义

2 对象,map(属性和值)

        (1) k: v  

        (2) 在下一行 写对象的属性和值

    数组(List,set)

        用 - 表示数组中的一个元素

      行内写法

 

properties配置文件容易乱码 需要在设置中找到这个然后调成这样

 示例1(在yml文件中配置):

application.yaml文件中配置

Person:
  name: 张三
  age: 21
  boss: true
  birth: 2022/12/5
  maps: {key1: value1,key2: value2}
  list: [dog,cat,pig]

Person类中利用ConfigurationProperties(prefix=" ")引入配置类中的元素 但是注意Person类中的类的名字必须与application.yaml中一致

package com.qcby.model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Date;
import java.util.List;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String name;
    private Integer age;
    private boolean boss;
    private Date birth;
    private Map<String,String> maps;
    private List<String> list;

    public Person() {
    }

    public Person(String name, Integer age, boolean boss, Date birth, Map<String, String> maps, List<String> list) {
        this.name = name;
        this.age = age;
        this.boss = boss;
        this.birth = birth;
        this.maps = maps;
        this.list = list;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    public boolean isBoss() {
        return boss;
    }

    public void setBoss(boolean boss) {
        this.boss = boss;
    }

    public Date getBirth() {
        return birth;
    }

    public void setBirth(Date birth) {
        this.birth = birth;
    }

    public Map<String, String> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    @Override
    public String toString() {
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", birth=" + birth +
                ", maps=" + maps +
                ", list=" + list +
                '}';
    }
}

最终在Test包下进行测试

@RunWith(SpringRunner.class)  //声明为测试单元
@SpringBootTest  //读取配置
public class SpringBoot01ApplicationTests {
    @Autowired
    Person person;
   

    @Test
    public void Context(){
        System.out.println(person);
    }
    }

示例2(在properties文件中配置)

在application.properties中

person.email=lucky
person.hello=junit
person.lastName=jiangjiayi
person.age=12
person.boss=true
person.list=dog,cat
person.maps.key1=value1
person.maps.key2=value2
person.dog.name=${person.hello}  //${} 可以理解为Vue中的{{}} 调用的是上面的person.hello的值
person.dog.age=16

Person类

package com.qcby.model;

import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import javax.validation.constraints.Email;
import java.util.Date;
import java.util.List;
import java.util.Map;

@Component
@ConfigurationProperties(prefix = "person")
public class Person {

    String email;

    String hello;

    String lastName;

    int age;

    boolean boss;

    List<String> list;

    Map<String,String>maps;

    Dog dog;

    public String getEmail() {
        return email;
    }

    public void setEmail(String email) {
        this.email = email;
    }

    public String getHello() {
        return hello;
    }

    public void setHello(String hello) {
        this.hello = hello;
    }

    public String getLastName() {
        return lastName;
    }

    public void setLastName(String lastName) {
        this.lastName = lastName;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public boolean isBoss() {
        return boss;
    }

    public void setBoss(boolean boss) {
        this.boss = boss;
    }

    public List<String> getList() {
        return list;
    }

    public void setList(List<String> list) {
        this.list = list;
    }

    public Map<String, String> getMaps() {
        return maps;
    }

    public void setMaps(Map<String, String> maps) {
        this.maps = maps;
    }

    public Dog getDog() {
        return dog;
    }

    public void setDog(Dog dog) {
        this.dog = dog;
    }

    @Override
    public String toString() {
        return "Person{" +
                "email='" + email + '\'' +
                ", hello='" + hello + '\'' +
                ", lastName='" + lastName + '\'' +
                ", age=" + age +
                ", boss=" + boss +
                ", list=" + list +
                ", maps=" + maps +
                ", dog=" + dog +
                '}';
    }
}

Dog类

package com.qcby.model;

public class Dog {
    String name;
    int age;

    public Dog() {
    }

    public Dog(String name, int age) {
        this.name = name;
        this.age = age;
    }

    @Override
    public String toString() {
        return "Dog{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }
}

测试类

@RunWith(SpringRunner.class)  //声明为测试单元
@SpringBootTest  //读取配置
public class SpringBoot01ApplicationTests {
    @Autowired
    Person person;
   

    @Test
    public void Context(){
        System.out.println(person);
    }
    }

   如果不是标准的application.properties 是其他的Person类中需要用PropertySource来添加配置文件的路径

@ImportSource

导入Spring的配置文件,让配置文件里面的内容生效;Spring Boot里面没有Spring的配置文件,我们自己编写的配置文件,也不能自动识别;想让Spring的配置文件生效,加载进来;@ImportResource标注在一个配置类上

SpringBoot推荐给容器中添加组件的方式;推荐使用全注解的方式
1、配置类@Configuration------>Spring配置文件
2、使用@Bean给容器中添加组件,将方法的返回值添加到容器中 容器中这个组件的默认ID就是方法名

 生成随机数:

${random.value}、${random.int}、${random.long}
${random.int(10)}、${random.int[1024,65536]}

多profile文件

        通过spring:

                        profiles:

                                active:    来决定运行谁

配置文件加载位置的优先级

–file:./config/
–file:./
–classpath:/config/
–classpath:/

优先级由高到底,高优先级的配置会覆盖低优先级的配置; 

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

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

相关文章

kettle从入门到精通 第八十四课 ETL之kettle kettle中Get data from XML使用实战教程

场景&#xff1a;解析xml文件或者内容解析出其中某些字段。 本来想着这个步骤使用起来比较简单&#xff0c;就没有梳理成文&#xff0c;结果群里的小伙伴为了使用这个步骤折腾了一下午。故有了此文。 在开始学习之前我们一起来学习下xml命名空间的相关知识&#xff0c;为下文展…

rem适配与vw适配

rem适配与vw适配 1.rem适配1.1原理1.2步骤1.3.1技术方案一1.3.2技术方案二 2.vw适配2.1原理2.2计算 3.rem适配与vw适配的优缺点 1.rem适配 1.1原理 rem&#xff08;根em&#xff09;是基于根元素&#xff08;即HTML元素&#xff09;的字体大小的长度单位。当根元素的字体大小…

【数据结构与算法】链栈(恋战)

链栈 一.链栈的原理二.结构三.初始化四.是否为空或满1.空2.满 五.入栈六.遍历栈七.出栈八.获取栈顶元素 一.链栈的原理 我们上节课用的数组来实现,现在我们用链式存储来实现,其实跟链队列基本一样,只不过是出栈的位置不一样而已. 二.结构 用一个头来当栈,每个节点作为链子. …

独角数卡支付后显示待支付问题

我这边碰到的是因为上线前测试未修改&#xff0c;看图片&#xff1a; 希望对你有帮助

Github零成本部署网站

网站的意义 网站是互联网上的信息平台&#xff0c;用于发布和交流内容。它们提供了从教育资料到商业服务等各种信息和服务。对企业和个人而言&#xff0c;网站是展示形象、沟通用户的重要渠道&#xff0c;有助于提升品牌认知度和促进业务发展。随着移动技术的进步&#xff0c;…

Linux 系统控制器助力包装灌装旋盖机实现智能控制

在包装行业中&#xff0c;灌装旋盖机是一种重要的设备&#xff0c;用于完成液体或粉体的灌装和旋盖操作。随着工业自动化和智能化的发展&#xff0c;对包装灌装旋盖机的智能控制要求越来越高。ARMxy 工业计算机作为一种高性能、高可靠性的嵌入式计算平台&#xff0c;为包装灌装…

Gradle出现Re-download dependencies and sync project (requires network)

distributionUrlhttps\://services.gradle.org/distributions/gradle-7.5-bin.zip改为 distributionUrlhttps://services.gradle.org/distributions/gradle-7.5-bin.zip 然后把目录下已生成的文件夹删掉&#xff0c;此例为下图的gradle-7.5-bin删除&#xff0c;然后sync就可以…

PXE安装部署教程

打开rhel-7.9的虚拟机 关闭虚拟机DHCP服务 yum group install "server with GUI" init 5开启图形界面 安装并部署kickstart 下载生成kickstart工具&#xff1a;yum install system-config-kickstart -y 启动图形制作工具&#xff1a;system-config-kickstart [ro…

C#MQTT协议应用

1 &#xff0c;MQTT介绍&#xff1a;MQTT详解以及实际操作_mqtt使用-CSDN博客 2&#xff0c;MQTT应用&#xff1a; C#MQTT编程06--MQTT服务器和客户端(winform版)_c# mqtt服务器-CSDN博客 3&#xff0c;MQTT实例&#xff1a; 效果 代码&#xff1a; 服务端 public parti…

亚马逊ERP全功能支持企业贴牌独立部署,可对外销售

亚马逊全功能 ERP&#xff01; 1. 对于亚马逊企业来说需要一款选品、财务管理、部署等为一体的性价比高的 ERP&#xff0c;而这款 ERP 功能齐全且性价比高。 2. 其铺货、采集、选品支持国内淘宝、拼多多、1688 等&#xff0c;以及国外亚马逊、速卖通等所有热门平台采集。采集…

壁纸头像小程序uniapp版(附源码)

壁纸头像类小程序是最热门的小程序类型之一&#xff0c;也是个人开通流量主的最佳选择。 技术栈 uniApp UniCloud Vue 功能 隐私授权 壁纸列表 壁纸预览 头像列表 图片下载到本地相册 流量主 banner、激励、插屏 技术功能 微信隐私保护指引 图片下载到本地相册 自定义头部组件…

洗地机哪个牌子好?分享四款口碑最好的洗地机

随着现代家居生活节奏的加快&#xff0c;洗地机作为家庭清洁的得力助手&#xff0c;其重要性日益凸显。市面上洗地机品牌繁多&#xff0c;如何选择一款性价比高、口碑良好的洗地机成为了消费者关注的焦点。本文将为大家精心挑选并分享四款备受好评的洗地机品牌及型号&#xff0…

11万条心理健康问答ACCESS\EXCEL数据库

今天从一个心理健康知识网站采集了11万多条的心理健康问答文章内容&#xff0c;感觉非常适用于心理健康、心理测试类产品的附加项&#xff0c;数据量很多正好提供各类关键词的搜索。 数据仅提供Microsoft Office Access数据库&#xff0c;扩展名是MDB。 MDB文件大小有350M左右&…

Python处理异常用操作笔记

在编写Python程序时&#xff0c;我们经常会遇到各种异常、错误等。对于异常处理的常用操作&#xff0c;记录如下&#xff1a; 1、try-except try-except语句是Python中最常用的异常处理结构。它的基本语法如下&#xff1a; try:# 尝试执行的代码块 except ExceptionType:# 当发…

多人在线像素涂鸦网页源码

多人在线像素涂鸦网页源码node.js项目&#xff0c;100100的像素格画布&#xff0c;可供多人在线涂鸦&#xff0c;画布内容实时刷新。 源码下载:多人在线像素涂鸦网页源码.zip 包含完整搭建教程 仍有不完善的地方&#xff1a; 1.没有限制一分钟内的涂鸦次数&#xff0c;这会…

大模型日报|20 篇必读的大模型论文

大家好&#xff0c;今日必读的大模型论文来啦&#xff01; 1.智谱AI 发布视频大模型 CogVideoX 技术报告 Sora 发布近半年之后&#xff0c;业内仍未出现一个开源的、满足商业级应用需求的视频生成模型。 今天&#xff0c;智谱AI 便推出了首个开源的商用级视频生成模型——Co…

Ubuntu 20.04 中安装 Nginx (通过传包编译的方式)、开启关闭防火墙、开放端口号

文章目录 前言一、安装包下载二、上传服务器并解压缩三、依赖配置安装四、生成编译脚本五、编译六、查看是否编译完成七、开始安装八、查看是否安装成功九、设置为开机自启动 前言 参考大佬文章并在基础上做了点修改&#xff0c;发篇文章记录下 防止下次遇到。 参考文章&#…

软件设计之CSS

软件设计之CSS 【狂神说Java】CSS3最新教程快速入门通俗易懂 学习内容&#xff1a; 软件开发技能点参照&#xff1a;软件开发&#xff0c;小白变大佬&#xff0c;这套学习路线让你少走弯路是认真的&#xff0c;欢迎讨论 软件开发技能点顺序参照&#xff1a;Java学习完整路线…

【Java】多线程精简笔记

进程和线程 进程是系统资源分配的基本单位&#xff0c;线程是系统调度的基本单位进程是程序正在运行的实例&#xff0c;里面包含着线程进程有独立的内存和资源&#xff0c;线程共用内存&#xff08;工作内存独有&#xff0c;主内存共用&#xff09;和资源线程比进程更加轻量&am…

Ubuntu防火墙相关命令

在Ubuntu系统中&#xff0c;启用防火墙可以通过ufw&#xff08;Uncomplicated Firewall&#xff09;来完成。以下是如何启用和配置ufw的步骤&#xff1a; 1.安装ufw&#xff08;如果尚未安装&#xff09; sudo apt update sudo apt install ufw2Ubuntu启用防火墙ufw&#xff1…