Cómo entender la convención sobre la configuración en Spring Boot

¡Poco conocimiento, gran desafío! Este artículo está participando en la creación de " Consejos para programadores ".

Wikipedia explica

Wikipedia lo explica de la siguiente manera:

Convención sobre configuración , también conocida como programación por convención , es un paradigma de diseño de software que tiene como objetivo reducir la cantidad de decisiones que los desarrolladores de software deben tomar y vivir los beneficios de la simplicidad sin perder flexibilidad.

Esencialmente, el desarrollador solo necesita especificar las partes de la aplicación que no se ajustan al contrato, por ejemplo, si hay una clase llamada Ventas en el modelo, la tabla correspondiente en la base de datos se llamará ventas de manera predeterminada. Solo si se desvía de esta convención, como nombrar la tabla "productos_vendidos", necesita escribir la configuración sobre este nombre.

Si las convenciones de la herramienta que está utilizando coinciden con sus expectativas, puede omitir la configuración; de lo contrario, puede configurarla de la manera que desee.

comprensión personal

La convención es mejor que la configuración, no es configuración cero o ninguna configuración, sino reducir la configuración a través de la convención.

La convención es mejor que la configuración. No es una nueva rutina, una nueva tecnología o una nueva idea, pero siempre ha existido. Spring Boot simplemente la amplifica y realmente logra la convención sobre la configuración.

Por ejemplo, en Spring Boot, cuando importamos spring-boot-starter-webun archivo , automáticamente nos ayudará a importar las dependencias relacionadas de Spring MVC (incluido Jackson compatible con Json y Hibernate Validator de validación de datos) y un contenedor Tomcat incorporado, que hace que las etapas de desarrollo puede ejecutar un proyecto web de forma independiente, ya sea directamente a través del método principal o como un paquete JAR.

Spring Boot acepta que cuando spring-boot-starter-webimportas , se acepta que eres un entorno de desarrollo web, y cuando eres un entorno web, se acepta que usarás Spring MVC (Struts2 y así sucesivamente, adiós, porque no es biológico, y es cierto No hay una alta tasa de uso de Spring MVC) En cuanto a otros, los necesitará y se importarán de forma predeterminada. Cuando se sienta inapropiado, puede usar menos cambios para satisfacer sus necesidades.

Spring está promoviendo el concepto de diseño de "convención sobre configuración", que comenzó con la versión de anotación de Spring (lanzada en JDK5.0, usando metadatos e introduciendo el concepto de anotación). La introducción de anotaciones es para reducir algunas configuraciones predeterminadas, y la introducción de anotaciones también representa el comienzo de una configuración simplificada. Oficialmente, la base de Spring es este hecho.

SpringBoot acordó reducir las dependencias en forma de arrancadores, por lo que muchos arrancadores de uso común se han lanzado uno tras otro.

Cómo reflejar en Spring Boot

Modo de operación

spring-boot-starter-webIncluye las dependencias relacionadas de Spring MVC (incluido Jackson compatible con Json y Hibernate Validator para la validación de datos) y un contenedor Tomcat incorporado, que permite que un proyecto WEB se ejecute de forma independiente a través del método principal o el paquete JAR durante la fase de desarrollo. En la fase de implementación, también se puede marcar como un paquete WAR y ejecutar en el entorno de producción.


import org.springframework.boot.SpringApplication;

import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication

public class StorageApplication {

    public static void main(String[] args) {

        SpringApplication.run(StorageApplication.class, args);

    }

}

复制代码

En una clase @SpringBootApplicationanotada , use SpringApplicationel runmétodo para mover elementos a través del JAR.

Herede la SpringBootServletInitializerclase e implemente elconfigure método para iniciar el proyecto a través de WAR.applicationsources

archivo de configuración

El archivo de configuración de Spring Boot debe ser, y solo puede ser, un archivo application.con nombre ymlo propertiesfile , y es único.

De forma predeterminada, Spring Boot solo irá src-main-resourcesa la carpeta para encontrar el applicationarchivo de configuración.

spring.profiles.activeSe puede definir una propiedad llamada en el archivo de configuración, que puede leer diferentes archivos de configuración según los diferentes entornos operativos. Por ejemplo dev, , Spring Boot también application-dev.ymlleerá la configuración del entorno del archivo de configuración.

Spring Boot tiene dos formas de inyectar las propiedades del archivo de configuración: una es aceptar las propiedades en el archivo de configuración a través de @Valueanotaciones y la otra es usar @ConfigurationPropertiesanotaciones para inyectar automáticamente las propiedades correspondientes en beans a través del método set.

  1. Al @Valueinyectar propiedades, el receptor puede ser un parámetro de método o una variable miembro, por ejemplo:

/**

* elasticsearch的地址

*/

@Value("${elasticsearch.host}")

private String host;

复制代码
  1. Al inicializar el bean @ConfigurationPropertiesleyendo la configuración, se llamará directamente a la inyección del método set correspondiente:

@Bean(name = "account")

@ConfigurationProperties(prefix = "spring.datasource.account")

public DataSource accountDbDataSource() {

    return DataSourceBuilder.create().build();

}

复制代码

Fuente de datos

Si se usa Spring-boot-starter-data-jpa, Spring Boot creará automáticamente un DataSource Bean. Sus propiedades se pueden definir directamente en el archivo de configuración, con el prefijo Spring.datasource. Y no hay necesidad de especificar el dialecto de la base de datos, este bean determinará automáticamente qué base de datos usar de acuerdo con el controlador de la base de datos del que siempre depende el proyecto.

Del mismo modo, si se usa spring-boot-starter-data-redis, también se creará automáticamente RedisTemlete, ConnectionFactoryetc. Bean. Las propiedades también se pueden definir en archivos de configuración, con el prefijo spring.redis.

Documentación de referencia

Supongo que te gusta

Origin juejin.im/post/7024854083223683085
Recomendado
Clasificación