04-002 springboot的配置

1、配置文件

springboot使用一个全局配置文件
application.properties
application.yml

作用:修改springboot的自动配置的默认值,springboot底层配置好的可以在此修改。

YAML(YAML Ain’t Makeup Language)

YAML A Makeup Language:是一个标记语言
YAML isn’t Makeup Language:不是一个标记语言

标记语言:
以前的配置文件,大多用xxx.xml,
yaml以数据为中心,没有大量标签开闭,比xml更适合做配置文件

server:
  port: 8090

2、YAML语法

  1. 基本语法
    k: v(键值对,空格必须有)
    以空格的缩进来控制层级关系:只要左对齐数据,都是 同一层级的
    属性和值大小写敏感

2.值的写法
字面量:普通的值(数字,字符串,布尔值)
k: v 字面直接写;
字符串不用加"" 或者 ’ ’
“”:双引号,不会转义字符串中的特殊字符;特殊字符会作为本身想表示的意思 name: “tt \n ss” 输出tt 换行 ss
’ ':单引号;会转义特殊字符,特殊字符最终只是一个普通字符串
name: “tt \n ss” 输出tt \n ss

对象、map(属性和值)(键值对):
k: v
对象还是k: v的方式;注意缩进

friends:
	name:  zs
	age:  20

行内写法:

friends:{name: zs,age:  20}

数组(List、set)
用-值表示数组中的一个元素

pets:
-  cat
-  dog
-  pig

行内写法:

pets:[cat,dog,pig]

3、配置文件注入

配置文件

person:
  lastName: zhangsan
  age: 18
  boss: false
  birth: 2019/01/01
  maps: {k1: v1,k2: v2}
  lists:
    - lisi
    - llliu
    - yy
  dog:
    name: gg
    age: 2

javaBean:

package com.magic.bean;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * @Description 将配置文件的每个属性值映射到组件
 * @ConfigurationProperties:告诉springboot将本类中的所有属性和配置文件中相关的配置进行绑定
 * prefix = ""配置文件中哪个下面的所有属性一一映射
 *
 * 只有这个组件是容器中的组件,才能使用容器中提供的@ConfigurationProperties功能
 * @Author Chelsea
 * @Date 2020/1/10 17:34
 */

@Component
@ConfigurationProperties(prefix = "person")
public class Person {
    private String  lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;


可以导入配置文件处理器,编写配置的时候有提示(lastName与last-name是一样的)

<!--        导入配置文件处理器,绑定后会有提示-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-configuration-processor</artifactId>
        </dependency>

同理application.properties的配置文件

person.last-name=tet
person.age=25
person.birth=2019/01/01
person.boss=true
person.maps.k1=v1
person.maps..k2=v2
person.lists=a,b.c
person.dog.name=gg
person.dog.age=2

@Value(“true”)
@Value("${person.last-name}")
@Value("#{11*2}")

@ConfigurationProperties@Value
功能批量注入配置文件中的属性一个个指定
松散绑定支持不支持
SpEL不支持支持
JSR303数据校验支持不支持

配置在yml还是properties都能获取到值;如果只是在某个业务中获取一下需要的值,使用@Value;如专门写个Javabean来映射配置文件中的值,用@ConfigurationProperties;默认从全局配置文件取值。

配置文件注入值数据校验

@Component
@ConfigurationProperties(prefix = "person")
@Validated
public class Person {
    @Email
    private String  lastName;

@PropertySource/@ImportResource

@PropertySource 指定注入的配置文件

@PropertySource(value = "classpath:person.properties")
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {

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

@ImportResource(locations = {"classpath:beans.xml"})

springboot推给容器中添加组件的方式:推荐使用全注解的方式
1.配置类===spring配置文件
2.使用@Bean给容器中添加组件

@Configuration//指明当前类是一个配置类,就是来替代spring配置文件,以前<bean></bean>标签加组件
public class MyConfig {

    @Bean//将方法的返回值添加到容器中,容器中这个组件默认的id就是方法名
    public HelloService helloService(){
        System.out.println("bean");
        return new HelloService();
    }

}

4、配置文件占位符

随机数
random.value,{random.int},${random.long} , ${random.uuid},
randon.int(10),{random.int[1024,65536]}

占位符获取之前配置的值,如果没有可以用:指定默认值

person.dog.name=${person.last-name}_dog
person.dog.name=${person.hello:hi}_dog

5、profile

多环境支持
1.多profile文件
主配置文件编写时,文件名可以是application-{profile}.properties/yml,
默认用文件名application.properties的配置;

2.yml支持多文档块

---
server:
  port: 8081
spring:
  profiles: 
    a
---
server:
  port: 8052
spring:
  profiles: dev
---
server:
  port: 8083
spring:
  profiles: prod

3.激活指定profile
在application.properties文件中可以配置激活环境

  1. spring.profiles.active=dev
  2. 命令行方式激活: java -jar xxx.jar --spring.profiles.active=dev,或者如下图配置
    在这里插入图片描述
  3. 虚拟机参数设置
    在这里插入图片描述
    ps.在测试过程中发现properties比yml优先级高

6、配置文件的加载位置

file:./config/
file:./
calsspath:/config
classpath:/

以上安装优先级由低到高的顺序,所有位置的文件都会被加载,高优先级配置内容覆盖低优先级配置内容,可以互补配置

可以通过spring.config.location来改变默认配置文件位置
在运维时,可以使用命令行参数的形式,启动项目的时候指定配置文件的新位置,指定文件和默认加载的配置文件一起起作用,形成互补文件。 用Terminal这个便捷控制台,运行命令。
java -jar xxx.jar --spring.config.location=指定文件

7、外部配置的加载顺序

很多,目前关注下面的:(优先级从高到低)

  1. 命令行参数;
  2. jar包外的application-{profile}.properties或application.yml(带spring.profile)配置文件
  3. jar包内的application-{profile}.properties或application.yml(带spring.profile)配置文件
    优先加载带profile的再来加载不带profile的
  4. jar包外的application.properties或application.yml(带spring.profile)配置文件
  5. jar包内的application.properties或application.yml(带spring.profile)配置文件

8、自动配置原理

可以配置参数参考文档.
目前大概理解,后续深入。
自动配置原理.

学习整理于springboot

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
资源包主要包含以下内容: ASP项目源码:每个资源包中都包含完整的ASP项目源码,这些源码采用了经典的ASP技术开发,结构清晰、注释详细,帮助用户轻松理解整个项目的逻辑和实现方式。通过这些源码,用户可以学习到ASP的基本语法、服务器端脚本编写方法、数据库操作、用户权限管理等关键技术。 数据库设计文件:为了方便用户更好地理解系统的后台逻辑,每个项目中都附带了完整的数据库设计文件。这些文件通常包括数据库结构图、数据表设计文档,以及示例数据SQL脚本。用户可以通过这些文件快速搭建项目所需的数据库环境,并了解各个数据表之间的关系和作用。 详细的开发文档:每个资源包都附有详细的开发文档,文档内容包括项目背景介绍、功能模块说明、系统流程图、用户界面设计以及关键代码解析等。这些文档为用户提供了深入的学习材料,使得即便是从零开始的开发者也能逐步掌握项目开发的全过程。 项目演示与使用指南:为帮助用户更好地理解和使用这些ASP项目,每个资源包中都包含项目的演示文件和使用指南。演示文件通常以视频或图文形式展示项目的主要功能和操作流程,使用指南则详细说明了如何配置开发环境、部署项目以及常见问题的解决方法。 毕业设计参考:对于正在准备毕业设计的学生来说,这些资源包是绝佳的参考材料。每个项目不仅功能完善、结构清晰,还符合常见的毕业设计要求和标准。通过这些项目,学生可以学习到如何从零开始构建一个完整的Web系统,并积累丰富的项目经验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值