Introducción a la configuración básica del archivo de configuración SpringBoot

Archivo de configuración SpringBoot

Uno, archivo de configuración

a) Introducción básica

① SpringBoot usa un archivo de configuración global y el nombre del archivo de configuración es fijo:application.properies;application.yml

② La función del archivo de configuración es modificar el valor predeterminado de la configuración automática de springBoot (SpringBoot nos configura automáticamente en la parte inferior)

Dos, YAML

a) Introducción básica

YAML es un acrónimo recursivo de "YAML no es un lenguaje de marcado" (YAML no es un lenguaje de marcado). Al desarrollar este lenguaje, YAML en realidad significaba: "Otro lenguaje de marcado" (todavía un lenguaje de marcado).

① Ventajas: perfil anterior, mayormente usando archivo xxxx.xml ; YAML:Centrado en datos, Que es más adecuado para archivos de configuración que json, xml, etc. , como se muestra en los siguientes ejemplos:

#yaml配置文件(显然YAML更加简洁不冗杂,更加适合做配置文件!)
server:
  port: 8081

<!--XML配置文件-->
<server>
	<port>8081</port>
</server>

b) sintaxis YAML

1) Uso básico

① clave: (espacio) valor: un par de pares clave-valor (los espacios deben estar presentes)

② Use sangría de espacio para controlar la relación jerárquica; siempre que una columna de datos esté alineada a la izquierda, todos estarán en el mismo nivel

③ Los atributos y valores distinguen entre mayúsculas y minúsculas

④ '#' significa comentario

⑤ No se permiten tabulaciones con sangría,Permitir solo espacios

server:
    port: 8088
    path: /hello

2) Soporte de tipo de datos

① literal: valores comunes (números, cadenas, booleano)

Escriba directamente literalmente: clave: valor

Las cadenas no necesitan estar entre comillas simples o dobles de forma predeterminada (puede usar comillas dobles o comillas simples para ajustar caracteres especiales )

② objetos, mapa (atributos y valores) (pares clave-valor)

Objeto / Mapa también es una forma de clave: valor

friends:
		lastName: zhangsan
		age: 20
#行内写法
friends: {
    
    lastName: zhangsan,age: 18}

③ matriz (Lista, conjunto)

Para : el comienzo de la línea representa un elemento en una matriz.

pets:
 - cat
 - dog
 - pig
 #行内写法
 pets: [cat,dog,pig]

Tres, inyección de valor de archivo de configuración

un) JavaBean

/**
 * 将配置文件中配置的每一个属性的值,映射到这个组件中
 * @ConfigurationProperties:告诉SpringBoot将本类中的所有属性和配置文件中相关的配置进行绑定;
 *      prefix = "person":配置文件中哪个下面的所有属性进行一一映射
 *
 * 只有这个组件是容器中的组件,才能容器提供的@ConfigurationProperties功能;
 *
 */
@Component
@ConfigurationProperties(prefix = "person")
@Validated//数据校验
public class Person {
    
    

    //@Email(加上注解后限制lastName必须是邮箱格式)
    private String lastName;
    private Integer age;
    private Boolean boss;
    private Date birth;

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

b) Propiedades de inyección del archivo de configuración

person:
    lastName: hello
    age: 18
    boss: false
    birth: 2017/12/12
    maps: {
    
    zhangsan: 23,wangwu: 25}
    lists:
      - lisi
      - zhaoliu
    dog:
      name: 小狗
      age: 12

<!--在项目Pom中导入配置文件处理器,配置文件进行绑定就会有提示-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-configuration-processor</artifactId>
			<optional>true</optional>
		</dependency>

c) Anotar @Value para inyectar propiedades

@Component
public class Person {
    
    
   
    @Value("${person.name:HelloWorld!}")
    private String lastName;
    @Value("#{11*2}")
    private Integer age;
    @Value("true")
    private Boolean boss;

    //复杂类型无法封装
    private Map<String,Object> maps;
    private List<Object> lists;
    private Dog dog;

d) Comparación del valor de adquisición de @Value y el valor de adquisición de @ConfigurationProperties

@Propiedades de configuración @Valor
Características Inyección masiva de propiedades en archivos de configuración Especificar uno por uno
Libremente enlazado (sintaxis flexible) apoyar no apoyo
Juego no apoyo apoyar
Verificación de datos JSR303 apoyar no apoyo
Paquete de tipo complejo apoyar no apoyo

Los archivos de configuración yml y las propiedades pueden obtener valores. Si solo necesitamos obtener un valor en el archivo de configuración en una determinada lógica de negocios, use @Value; si escribimos un javaBean para mapear con el archivo de configuración, usamos @ConfigurationProperties directamente

e) @ PropertySource & @ ImportResource & @ Bean

@PropertySource : carga el archivo de configuración especificado

#person.properties文件

person.last-name=李四
person.age=12
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=dog
person.dog.age=15

@PropertySource(value = {
    
    "classpath:person.properties"})//类路径下加载属性
@Component
@ConfigurationProperties(prefix = "person")
//@Validated
public class Person {
    
    
    
    private String lastName;
    private Integer age;
    private Boolean boss;

@ImportResource : Importe el archivo de configuración de Spring, deje que el archivo de configuración

No hay un archivo de configuración de Spring en Spring Boot. El archivo de configuración que escribimos nosotros mismos no puede ser reconocido automáticamente. Para que el archivo de configuración de Spring sea efectivo (cargado en), @ ImportResource está marcado en una clase de configuración

@ImportResource(locations = {
     
     "classpath:beans.xml"})//导入Spring的配置文件让其生效
@SpringBootApplication
public class SpringBoot02ConfigApplication {
     
     

	public static void main(String[] args) {
     
     
		SpringApplication.run(SpringBoot02ConfigApplication.class, args);
	}
}
<?xml version="1.0" encoding="UTF-8"?><!--beans.xml配置文件-->
<beans xmlns="http://www.springframework.org/schema/beans"
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd">


    <bean id="helloService" class="com.atguigu.springboot.service.HelloService"></bean>
</beans>

@bean

SpringBoot recomienda la forma de agregar componentes al contenedor ;Se recomienda utilizar el método de anotación completo.

1. Clase de configuración ** @ Configuración ** ------> Archivo de configuración de Spring

2. Use ** @ Bean ** para agregar componentes al contenedor

/**
 * @Configuration:指明当前类是一个配置类;用来替代之前的Spring配置文件
 *
 * 以前在配置文件中用<bean><bean/>标签添加组件
 *
 */
@Configuration
public class MyAppConfig {
     
     

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

Cuatro, marcador de posición del archivo de configuración

a) Número aleatorio

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

b) El marcador de posición obtiene el valor configurado previamente, si no, puede serUso: especifique el valor predeterminado

person.last-name=张三${random.uuid}
person.age=${random.int}
person.birth=2017/12/15
person.boss=false
person.maps.k1=v1
person.maps.k2=14
person.lists=a,b,c
person.dog.name=${person.hello:hello}_dog 
person.dog.age=15

Cinco, Perfil

a) Varios archivos de perfil

Cuando se escribe el archivo de configuración principal, el nombre del archivo puede ser application- {profile} .properties / yml, y la configuración de application.properties se usa de forma predeterminada

b) yml admite el modo de bloqueo de varios documentos


server:
  port: 8081
spring:
  profiles:
    active: prod

---
server:
  port: 8083
spring:
  profiles: dev


---

server:
  port: 8084
spring:
  profiles: prod  #指定属于哪个环境

c) Activar el perfil especificado

1. Especifique spring.profiles.active = dev en el archivo de configuración

2. Línea de comando:

Java -jar spring-boot-02-config-0.0.1-SNAPSHOT.jar --spring.profiles.active = dev (Puede configurar directamente los parámetros de la línea de comando entrante durante la prueba)

3. Parámetros de la máquina virtual;

-Dspring.profiles.active = dev

Seis, ubicación de carga del archivo de configuración

El inicio de Springboot escaneará los archivos application.properties o application.yml en las siguientes ubicaciones como el archivo de configuración predeterminado para Spring boot; la prioridad es de mayor a menor, y la configuración con alta prioridad anulará la configuración con baja prioridad; SpringBoot comenzará desde estas cuatro ubicaciones. Todos cargan el archivo de configuración principal, configuración complementaria.

–Archivo: ./ config /

-expediente:./

–Classpath: / config /

–Classpath: /

Supongo que te gusta

Origin blog.csdn.net/weixin_45496190/article/details/107168783
Recomendado
Clasificación