La forma en que SpringBoot lee la configuración

inserte la descripción de la imagen aquí

Varias formas de leer la configuración

Spring Boot proporciona una variedad de formas de leer la configuración, las siguientes son algunas de las formas más utilizadas:

  1. Use el archivo application.properties o application.yml: en el directorio raíz de la ruta de clase del proyecto Spring Boot, puede crear un archivo llamado application.properties o application.yml en el que define las propiedades de configuración. Spring Boot carga automáticamente estos archivos e inyecta propiedades de configuración en la aplicación. Por ejemplo, se puede definir un archivo application.properties server.port=8080para especificar el puerto de la aplicación.

  2. Use la anotación @Value: use la anotación @Value en los componentes de Spring Boot (como clases, campos, parámetros) para inyectar directamente el valor de la propiedad de configuración en la ubicación correspondiente. Por ejemplo, puede @Value("${server.port}")inyectar el valor del atributo server.port en el archivo de configuración en la variable correspondiente.

  3. Use la anotación @ConfigurationProperties: al crear una anotación @ConfigurationProperties marcada como Bean, puede vincular el valor de la propiedad de configuración a la propiedad del Bean. Cabe señalar que debe agregar anotaciones @Component o @Configuration a la clase donde se encuentra el Bean para asegurarse de que el contenedor Spring lo escanee. Por ejemplo, puede crear un Bean llamado AppConfig, definir los campos correspondientes a las propiedades de configuración en él y usar la anotación @ConfigurationProperties para especificar el prefijo y luego inyectar el Bean en otros componentes que necesitan usar las propiedades de configuración.

  4. Use el objeto Environment: a través de la anotación @Autowired, el objeto Environment se puede inyectar en cualquier Spring Bean y luego se puede usar el método getProperty del objeto para obtener el valor de la propiedad de configuración. Por ejemplo, environment.getProperty("server.port")el valor de la propiedad server.port puede obtenerse mediante .

Los anteriores son algunos métodos comunes de configuración de lectura de Spring Boot De acuerdo con las necesidades y escenarios específicos, puede elegir una forma adecuada de leer y usar las propiedades de configuración.

Cómo evitar que Springboot lea el archivo de configuración varias veces @Value

Para evitar que Spring Boot lea los valores en el archivo de configuración varias veces y mejorar la tolerancia a fallas, se pueden usar anotaciones @ConfigurationPropertiesen lugar de @Valueanotaciones.

  1. Cree una clase POJO para mapear propiedades de configuración y @ConfigurationPropertiesmárquela con anotaciones. En esta clase, defina las variables de instancia correspondientes a las propiedades en el archivo de configuración y proporcione los métodos setter y getter correspondientes.

    import org.springframework.boot.context.properties.ConfigurationProperties;
    import org.springframework.stereotype.Component;
    
    @Component
    @ConfigurationProperties(prefix = "your.prefix")
    public class AppConfig {
          
          
        private String property1;
        private int property2;
        
        // 省略setter和getter方法
    }
    

    Esto supone que todas las propiedades en su archivo de configuración tienen el prefijo "su.prefijo".

  2. Cuando es necesario usar propiedades de configuración, AppConfigla clase se introduce a través de la inserción de dependencias y las propiedades que contiene se usan directamente.

    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.stereotype.Service;
    
    @Service
    public class YourService {
          
          
        private final AppConfig appConfig;
        
        @Autowired
        public YourService(AppConfig appConfig) {
          
          
            this.appConfig = appConfig;
        }
    
        public void someMethod() {
          
          
            // 使用配置属性
            String property1Value = appConfig.getProperty1();
            int property2Value = appConfig.getProperty2();
       
            // 其他操作
        }
    }
    

    Para obtener objetos a través de la inyección de dependencia AppConfig, puede acceder directamente a las propiedades correspondientes en los métodos o clases que necesitan usar propiedades de configuración, sin usar @Valueanotaciones en cada propiedad.

  3. Asegúrese de que las propiedades correspondientes estén configuradas correctamente en el archivo de configuración para que Spring Boot las lea.

    your.prefix.property1=value1
    your.prefix.property2=100
    

    De esta manera, Spring Boot solo leerá el archivo de configuración una vez al inicio y realizará la asignación de atributos, en lugar de leer varias veces para generar valores de atributos duplicados.

Puntos a tener en cuenta

En el proceso de usar Spring Boot para leer la configuración, hay algunas cosas a las que debe prestar atención, como se indica a continuación:

  1. Nombre y ubicación del archivo de configuración: de forma predeterminada, Spring Boot cargará automáticamente el archivo application.properties o application.yml en el directorio raíz de classpath como archivo de configuración. Si necesita cambiar la ubicación o el nombre del archivo de configuración, puede especificarlo mediante la anotación @PropertySource en la clase de inicio. Al mismo tiempo, también puede especificar el nombre y la ubicación del archivo de configuración que se cargará a través de las propiedades spring.config.name y spring.config.location.

  2. Prioridad de las propiedades de configuración: Spring Boot admite varias fuentes de propiedades de configuración (incluidos los archivos de configuración, las variables de entorno, los parámetros de la línea de comandos, etc.), y las propiedades de configuración de diferentes fuentes tienen diferentes prioridades. Por lo general, los argumentos de la línea de comandos tienen la prioridad más alta, seguidos de las variables de entorno y luego las propiedades en los archivos de configuración. Cuando existen varias fuentes para un atributo con el mismo nombre, las fuentes posteriores sobrescribirán a las anteriores. Es importante tener en cuenta que cuando se usa la anotación @ConfigurationProperties para vincular propiedades, el prefijo de la propiedad también afectará la prioridad de la propiedad.

  3. Use propiedades de configuración seguras para tipos: Spring Boot proporciona propiedades de configuración seguras para tipos.Puede crear una clase POJO y definir los campos correspondientes a las propiedades de configuración en ella, y usar la anotación @ConfigurationProperties para especificar el prefijo para lograr el enlace de propiedad. Hacer esto evita codificar cadenas en su código para leer propiedades, lo que aumenta la seguridad y la capacidad de mantenimiento de los tipos.

  4. Asegúrese de que las propiedades de configuración sean correctas: al leer las propiedades de configuración, debe asegurarse de que los valores de las propiedades sean legales y correctos. Spring Boot proporciona algunas funciones de validación, que pueden limitar el rango de valores o el formato de los atributos mediante el uso de anotaciones de validación (como @NotNull, @Min, @Max, etc.) en los campos de atributo. Además, se puede implementar una lógica de verificación más compleja a través de validadores personalizados.

  5. Use Profile para el cambio de entorno: Spring Boot admite el uso de Profile para lograr el cambio de configuración en diferentes entornos. Puede especificar el perfil actualmente activo a través de la propiedad spring.profiles.active en el archivo de configuración y luego definir las propiedades de configuración correspondientes en diferentes archivos de configuración. Esto facilita la administración y el cambio de configuraciones en diferentes entornos.

  6. Consideraciones de seguridad: al leer atributos de configuración, como información confidencial o contraseñas, es necesario garantizar la seguridad de la configuración. Se recomienda mantener la información confidencial en un lugar seguro (como una base de datos, un almacén de claves, etc.) y proteger el almacenamiento y la transmisión de las propiedades de configuración mediante cifrado u otras medidas de seguridad.

Los anteriores son algunos asuntos a los que se debe prestar atención cuando se utiliza Spring Boot para leer la configuración. El uso razonable de los atributos de configuración de acuerdo con situaciones específicas garantiza la corrección y seguridad de la aplicación.

Cómo aumentar la tolerancia a fallos

Aquí hay algunas formas de mejorar la tolerancia a fallas de la configuración de lectura de Spring Boot:

  1. Estructura razonable del archivo de configuración: divida y organice los archivos de configuración según el entorno, los módulos de la aplicación, etc., para facilitar la administración y el mantenimiento. Por ejemplo, puede crear diferentes archivos de configuración para diferentes entornos y cargar la configuración correspondiente especificando el archivo de configuración activo.

  2. Validación de propiedades y valores predeterminados: validación y verificación de propiedades antes de leer las propiedades de configuración. La validación y la conversión de tipos de propiedades se pueden lograr mediante las anotaciones adecuadas, como @Value y @ConfigurationProperties. Además, establezca valores predeterminados para las propiedades para evitar excepciones cuando falta la configuración o es incorrecta.

  3. Manejo y registro de excepciones: manejo y registro adecuados de las excepciones que pueden ocurrir durante la lectura de la configuración. Puede usar el bloque try-catch para detectar excepciones y registrar información relevante a tiempo para el seguimiento y la resolución de problemas.

  4. Varias fuentes de configuración: además del archivo de configuración principal (application.properties o application.yml), se pueden usar archivos de configuración o elementos de configuración adicionales para anular o ampliar la configuración. Por ejemplo, puede cargar archivos de configuración adicionales mediante la anotación @PropertySource o utilizar una solución de configuración distribuida como Spring Cloud Config.

  5. Caché de parámetros de configuración: cuando se inicia la aplicación, los parámetros de configuración leídos se almacenan en caché en la memoria para reducir las operaciones de E/S posteriores para obtener configuraciones. Puede usar la anotación @RefreshScope proporcionada por Spring Boot para implementar una actualización dinámica de los parámetros de configuración, de modo que surta efecto cuando se cambie la configuración.

  6. Comprobación del estado de la configuración: implemente un mecanismo de comprobación del estado de la configuración para garantizar la exactitud y disponibilidad de la configuración. Al definir un HealthIndicator personalizado y agregarlo al punto final de verificación de estado, se pueden verificar los atributos de configuración clave y se puede proporcionar el estado de salud correspondiente.

Tenga en cuenta que los métodos anteriores son solo algunas sugerencias, y la estrategia específica de tolerancia a fallas y el método de implementación dependen de los requisitos específicos y las condiciones del proyecto.

Supongo que te gusta

Origin blog.csdn.net/weixin_53742691/article/details/131744226
Recomendado
Clasificación