Spring Boot 实例解析:配置文件

  1. SpringBoot 的热部署:
    1. Spring 为开发者提供了一个名为 spring-boot-devtools 的模块来使用 SpringBoot 应用支持热部署,提高开发者的效率,无需手动重启 SpringBoot 应用
    2. 引入依赖:
      <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <optional>true</optional> 
      </dependency>
    3. 修改 Java 代码或者配置文件模板后可以通过 Ctrl + F9 来实现热部署
  2. 配置文件:
    1. SpringBoot 使用一个全局的配置文件,配置文件名是固定的
      1. application.properties
      2. application.yml
    2. 配置文件的作用:修改 SpringBoot 自动装配的默认值,SpringBoot 在底层都给自动配置好
    3. 标记语言:
      1. 以前的配置文件:大多都是 xx.xml 文件
      2. YAML:以数据为中心,比 json、xml 更适合做配置文件
      3. 例如:
  3. YAML 语法:
    1. 基本语法:
      1. K:(空格) V:表示一对键值对(空格必须有)
      2. 只要是左对齐的一列数据,都是同一个层级的
      3. 属性和值也是大小写敏感
    2. 值的写法:
      1. 字面量:普通的值(数字、字符串、布尔)
      2. K:V:字面量直接来写
      3. 字符串默认不用加上单引号或双引号
      4. " ":双引号,不会转义字符串里面的特殊字符,特殊字符会作为本身想表示的意思:
        1. 例如:name:"zhangsan \n lisi"  ==输出==> zhangsan 换行 lisi
      5. ' ':单引号,会转义特殊字符,特殊字符最终只是一个普通的字符串数据
        1. 例如:name:'zhangsan \n lisi' ==输出==> zhangsan \n lisi
  4. 对象、Map(属性和值):
    1. K:V:在下一行来写对象的属性和值的关系,注意缩进
    2. 对象:key:value 方式
    3. 数组:用 - 表示数组中的一个元素
  5. 配置文件注入:
    1. 配置文件:
      person:laseName: helloage: 18boss: falsebirth: 2019-09-09maps: {k1:v1,k2:v2}lists: - lisi- zhaoliiudog: name: 小狗age: 12
    2. JavaBean:
      @Component
      @ConfigurationProperties(prefix = "person")
      public class Person {private String laseName;private Integer age;private Boolean boss;private Date birth;private Map<String, Object> maps;private List<Object> lists;private Dog dog;
      }
    3. 导入文件处理器:
      <!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
      </dependency>
    4. properties 配置文件在 IDEA 中默认 UTF-8 乱码问题:
    5. @Value 获取值和@ConfigurationProperties 获取值比较:
      1. 松散绑定:大小写区别,@ConfigurationProperties 会自动找到驼峰命名法的哪个字段 ==> @Value  注解不支持自动寻找
      2. SqEL:@Value 注解中可以使用 #{} 和 ${} 进行赋值,而 @ConfigurationProperties 不支持这样赋值
      3. JSR303 数据校验:例如 @Emile 注解
        1. 在 @ConfigurationProperties 中加入这个注解,在配置文件中相对应的形式应给为 Emile 形式,否则会报错
        2. 在 @Value 注解注入值使用这个数据校验注解是无效的
      4. 复杂数据封装:
        1. @Value 注解不支持除基本数据类型以外类型封装,而 @ConfigurationProperties 注解支持复杂数据封装
      5. 在某个业务中获取一个配置文件中的某个值,使用 @Value 注解
      6. 编写一个 JavaBean 来和配置文件进行映射,直接使用 @ConfigurationProperties 注解
    6. 配置文件:
      spring.application.name=S45SpringBootDemoApplicationTestsperson.email=kkkk
      person.hello=lucky
      person.last-name=张三
      person.birth=2017/2/4
      person.age=19
      person.boss=true
      person.list="dog,cat,animal"
      person.maps.key1=value1
      person.maps.key2=value2
      person.dog.name=${person.hello}_dog
      person.dog.age=12
    7. @Value 注解:注入值数据校验
      1. 注意:@Value 注解不能注入复杂属性(对象,集合等)
        @Conponent
        @Validated     //加入校验方式
        public class Person {//传入的值必须是邮箱格式,否则会报错@Emailprivate String email;private String hello;//${} : 为取值和 application.properties 配置文件中字段一样的值@Value("${person.last-name}")private String lastName;//#{} : 可以写表达式@Value("#{3*2}")private Integer age;//@Value 注解也可以直接赋值@Value("true")private boolean boss;//@Value注解不能注入复杂属性private Date birth;private Map<String,String> maps;private List<String> list;//set  get 方法}
    8. @ConfigurationProperties 注解映射注入属性:
      1. 注意:容器中的组件才能使用该注解
        @Component
        //将本类中的所有属性和配置文件中 person2 下面的所有属性进行映射
        @ConfigurationProperties(prefix = "person2")
        @Validated    //校验注解
        public class Person2 {String email;String hello;String lastName;int age;boolean boss;Date birth;Map<String,String> maps;List<String> list;Dog dog;
        }
    9. 导入配置文件处理器:
      <!‐‐导入配置文件处理器,配置文件进行绑定就会有提示‐‐>
      <dependency><groupId>org.springframework.boot</groupId><artifactId>spring‐boot‐configuration‐processor</artifactId><optional>true</optional>
      </dependency>
  6. @PropertySource & @ImportResource & @Bean:
    1. @PropertySource:加载指定的配置文件
      //@PropertySource:加载指定配置文件
      @PropertySource(value={"classpath:person2.properties"})
      @Component
      //将本类中的所有属性和配置文件中 person2 下面的所有属性进行映射
      @ConfigurationProperties(prefix = "person2")
      public class Person2 {String email;String hello;String lastName;int age;boolean boss;Date birth;Map<String,String> maps;List<String> list;Dog dog;
      }
    2. @ImportResource:导入 Spring 的配置文件,让配置文件里面的内容生效
      1. SpringBoot 里面没有 Spring 的配置文件,我们自己编写的配置文件也不能自动识别
      2. 编写 applicationContext.xml 文件:
        <?xml version="1.0" encoding="UTF-8"?>
        <beans xmlns="http://www.springframework.org/schema/beans"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://www.springframework.org/schema/beanshttp://www.springframework.org/schema/beans/spring-beans.xsd"><bean id="personservice" class="com.example.springbootdemo.Service.impl.Person2ServiceImpl"></bean>
        </beans>
      3. 导入 Spring 的配置让其生效:
      4. 配置类注入测试:
        @RunWith(SpringRunner.class)
        @SpringBootTest
        public class TxDemo3ApplicationTests {//注入对象@AutowiredApplicationContext applicationContext;@Testpublic void contextLoads01() {System.out.println(applicationContext.getBean("personservice"));}
        }
    3. @Bean:给容器中添加组件
      1. 配置类 @Configuration  ==> 配置文件
      2. 使用 @Bean 给容器中添加组件
        //@Configuration:标明当前是一个配置类,代替之前的 Spring 配置文件
        @Configuration
        public class MyAppConfig {//将方法返回的值添加到容器当中,当前组件默认 ID 为当前文件名//@Bean注解给容器中添加组件@Beanpublic HelloService HelloService01(){System.out.println("配置类 @Bean 给容器中添加了组件");return new HelloServiceImpl();}
        }

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux网络 HTTPS 协议原理

概念 HTTPS 也是一个应用层协议&#xff0c;不过 是在 HTTP 协议的基础上引入了一个加密层。因为 HTTP的内容是明文传输的&#xff0c;明文数据会经过路由器、wifi 热点、通信服务运营商、代理服务器等多个物理节点&#xff0c;如果信息在传输过程中被劫持&#xff0c;传输的…

java练习(5)

ps:题目来自力扣 给你两个 非空 的链表&#xff0c;表示两个非负的整数。它们每位数字都是按照 逆序 的方式存储的&#xff0c;并且每个节点只能存储 一位 数字。 请你将两个数相加&#xff0c;并以相同形式返回一个表示和的链表。 你可以假设除了数字 0 之外&#xff0c;这…

深入 Rollup:从入门到精通(三)Rollup CLI命令行实战

准备阶段&#xff1a;初始化项目 初始化项目&#xff0c;这里使用的是pnpm&#xff0c;也可以使用yarn或者npm # npm npm init -y # yarn yarn init -y # pnpm pnpm init安装rollup # npm npm install rollup -D # yarn yarn add rollup -D # pnpm pnpm install rollup -D在…

MySQL数据库环境搭建

下载MySQL 官网&#xff1a;https://downloads.mysql.com/archives/installer/ 下载社区版就行了。 安装流程 看b站大佬的视频吧&#xff1a;https://www.bilibili.com/video/BV12q4y1477i/?spm_id_from333.337.search-card.all.click&vd_source37dfd298d2133f3e1f3e3c…

松灵机器人 scout ros2 驱动 安装

必须使用 ubuntu22 必须使用 链接的humble版本 #打开can 口 sudo modprobe gs_usbsudo ip link set can0 up type can bitrate 500000sudo ip link set can0 up type can bitrate 500000sudo apt install can-utilscandump can0mkdir -p ~/ros2_ws/srccd ~/ros2_ws/src git cl…

【最长上升子序列Ⅱ——树状数组,二分+DP,纯DP】

题目 代码&#xff08;只给出树状数组的&#xff09; #include <bits/stdc.h> using namespace std; const int N 1e510; int n, m; int a[N], b[N], f[N], tr[N]; //f[i]表示以a[i]为尾的LIS的最大长度 void init() {sort(b1, bn1);m unique(b1, bn1) - b - 1;for(in…

Linux安装zookeeper

1, 下载 Apache ZooKeeperhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apache.org/releases.htmlhttps://zookeeper.apa…

day6手机摄影社区,可以去苹果摄影社区学习拍摄技巧

逛自己手机的社区&#xff1a;即&#xff08;手机牌子&#xff09;摄影社区 拍照时防止抖动可以控制自己的呼吸&#xff0c;不要大喘气 拍一张照片后&#xff0c;如何简单的用手机修图&#xff1f; HDR模式就是让高光部分和阴影部分更协调&#xff08;拍风紧时可以打开&…

linux本地部署deepseek-R1模型

国产开源大模型追平甚至超越了CloseAI的o1模型&#xff0c;大国崛起时刻&#xff01;&#xff01;&#xff01; DeepSeek R1 本地部署指南   在人工智能技术飞速发展的今天&#xff0c;本地部署AI模型成为越来越多开发者和企业关注的焦点。本文将详细介绍如何在本地部署DeepS…

小程序-基础加强-自定义组件

前言 这次讲自定义组件 1. 准备今天要用到的项目 2. 初步创建并使用自定义组件 这样就成功在home中引入了test组件 在json中引用了这个组件才能用这个组件 现在我们来实现全局引用组件 在app.json这样使用就可以了 3. 自定义组件的样式 发现页面里面的文本和组件里面的文…

c语言(关键字)

前言&#xff1a; 感谢b站鹏哥c语言 内容&#xff1a; 栈区&#xff08;存放局部变量&#xff09; 堆区 静态区&#xff08;存放静态变量&#xff09; rigister关键字 寄存器&#xff0c;cpu优先从寄存器里边读取数据 #include <stdio.h>//typedef&#xff0c;类型…

【最长不下降子序列——树状数组、线段树、LIS】

题目 代码 #include <bits/stdc.h> using namespace std; const int N 1e510; int a[N], b[N], tr[N];//a保存权值&#xff0c;b保存索引,tr保存f&#xff0c;g前缀属性最大值 int f[N], g[N]; int n, m; bool cmp(int x, int y) {if(a[x] ! a[y]) return a[x] < a[…

springboot 启动原理

目标&#xff1a; SpringBootApplication注解认识了解SpringBoot的启动流程 了解SpringFactoriesLoader对META-INF/spring.factories的反射加载认识AutoConfigurationImportSelector这个ImportSelector starter的认识和使用 目录 SpringBoot 启动原理SpringBootApplication 注…

《Origin画百图》之脊线图

1.数据准备&#xff1a;将数据设置为y 2.选择绘图>统计图>脊线图 3.生成基础图形&#xff0c;并不好看&#xff0c;接下来对图形属性进行设置 4.双击图形>选择图案>颜色选择按点>Y值 5.这里发现颜色有色阶&#xff0c;过度并不平滑&#xff0c;需要对色阶进行更…

安卓(android)实现注册界面【Android移动开发基础案例教程(第2版)黑马程序员】

一、实验目的&#xff08;如果代码有错漏&#xff0c;可查看源码&#xff09; 1.掌握LinearLayout、RelativeLayout、FrameLayout等布局的综合使用。 2.掌握ImageView、TextView、EditText、CheckBox、Button、RadioGroup、RadioButton、ListView、RecyclerView等控件在项目中的…

星际智慧农业系统(SAS),智慧农业的未来篇章

新月人物传记&#xff1a;人物传记之新月篇-CSDN博客 相关文章&#xff1a;星际战争模拟系统&#xff1a;新月的编程之道-CSDN博客 新月智能护甲系统CMIA--未来战场的守护者-CSDN博客 “新月智能武器系统”CIWS&#xff0c;开启智能武器的新纪元-CSDN博客 目录 星际智慧农业…

MP4基础

一、什么是MP4&#xff1f; MP4是一套用于音频、视频信息的压缩编码标准&#xff0c;由国际标准化组织&#xff08;ISO&#xff09;和国际电工委员会&#xff08;IEC&#xff09;下属的“动态图像专家组”&#xff08;Moving Picture Experts Group&#xff0c;即MPEG&#xff…

揭秘算法 课程导读

目录 一、老师介绍 二、课程目标 三、课程安排 一、老师介绍 学问小小谢 我是一个热爱分享知识的人&#xff0c;我深信知识的力量能够启迪思考&#xff0c;丰富生活。 欢迎每一位对知识有渴望的朋友&#xff0c;如果你对我的创作感兴趣&#xff0c;或者我们有着共同的兴趣点&…

Visual Studio Code应用本地部署的deepseek

1.打开Visual Studio Code&#xff0c;在插件中搜索continue&#xff0c;安装插件。 2.添加新的大语言模型&#xff0c;我们选择ollama. 3.直接点connect&#xff0c;会链接本地下载好的deepseek模型。 参看上篇文章&#xff1a;deepseek本地部署-CSDN博客 4.输入需求生成可用…

97,【5】buuctf web [极客大挑战 2020]Greatphp

进入靶场 审代码 <?php // 关闭所有 PHP 错误报告&#xff0c;防止错误信息泄露可能的安全隐患 error_reporting(0);// 定义一个名为 SYCLOVER 的类 class SYCLOVER {// 定义类的公共属性 $sycpublic $syc;// 定义类的公共属性 $loverpublic $lover;// 定义魔术方法 __wa…