Los desarrolladores que no entienden las propiedades en primavera pueden encontrarlo un poco confuso, principalmente porque hay muchos métodos de configuración y muchos métodos de uso.
Este artículo no es un análisis de análisis de principios o análisis de código fuente, pero espero que pueda ayudar a los lectores a comprender y usar mejor las propiedades de resorte.
Uso de propiedades
Todos los lectores de este artículo han usado la primavera. Primero echemos un vistazo a cómo se usan las propiedades. Hay varios métodos de uso común en primavera:
1. Usar en el archivo de configuración XML
Es decir, el valor en $ {} se reemplaza automáticamente.
<bean id = "xxx"> <propiedad name = "url" value = "$ {javadoop.jdbc.URL}" /> < /bean>2. Use a través de la inyección de @Value
@Value ("$ {javadoop.jdbc.url}") URL de cadena privada;3. Obtenga a través del medio ambiente
Hay algunas cosas a las que prestar atención en este método. No todos los métodos de configuración admiten la obtención de valores de propiedad a través de la interfaz de entorno. La prueba personal solo se puede usar al usar la anotación @propertySource, de lo contrario obtendrá nulo. En cuanto a cómo configurarlo, hablaré de ello inmediatamente a continuación.
@AUTOWIREDPrivate Environment Env; public String getUrl () {return env.getProperty ("javadoop.jdbc.url");}Si está registrado en Spring Boot Application.Properties, eso está bien.
Configuración de propiedades
Mencionamos anteriormente cómo usar las propiedades que configuramos, entonces, ¿cómo configurarlas? Spring proporciona muchos métodos de configuración.
1. Configurar a través de XML
El siguiente es el método de configuración más utilizado, y muchos proyectos se escriben así:
<context: Property-placeholder ubicación = "classpath: sys.properties" />
2. Configurar a través de @PropertySource
La configuración XML anterior es muy común, pero si también tiene la necesidad de eliminar todos los archivos de configuración XML, debe usar el siguiente método:
@PropertySource ("classpath: sys.properties")@configurationPublic class javadoopConfig {}Tenga en cuenta que @PropertySource debe usarse con @Configuration aquí, por lo que no entraré en detalles.
3. PropertyPlaceHolderConfigurer
Si los lectores han visto esto, no importa si están sorprendidos. Así es como se usó antes de la primavera 3.1:
<Bean> <Property name = "ubicaciones"> <list> <alon valor> classpath: sys.properties </value> </list> </property> <propiedad name = "IgnoreUnresolVablePlaceHolders" Value = "True"/> <!-Algunas propiedades se pueden configurar aquí-> </bean>
Por supuesto, también podemos usar la versión de configuración de Java correspondiente:
@BeanPublicPublicPlaceHolderConfigurer PropertyIess () {PropertyPlaceHolderConfigurer ppc = new PropertyPlaceHolderConfigurer (); Recursos [] recursos = new ClassPathResource [] {new ClassPathResource ("sys.properties")}; ppc.setLocations (recursos); ppc.setigneunresolvablePlaceHolders (verdadero); devolver ppc;}4. PropertySources PlaceHolderConfigurer
Cuando se lanzó la primavera 3.1, se introdujo PropertySources PlaceHolderConfigurer, que es una nueva clase. Tenga en cuenta que hay fuentes adicionales a nombre de la propiedad anterior de la propiedad, y el paquete al que pertenece es diferente. Está en el paquete Spring-Context.
No hay diferencia en la configuración:
<Bean> <Property name = "ubicaciones"> <list> <alon valor> classpath: sys.properties </value> </list> </property> <propiedad name = "IgnoreUnresolVablePlaceHolders" Value = "True"/> <!-Algunas propiedades se pueden configurar aquí-> </bean>
También tengamos una versión de configuración de Java:
@BeanPublic PropertySources PlaceHolderConfigurer Properties () {PropertySources PlaceHolderConfigurer PSPC = New PropertySources PlaceHolderConfigurer (); Recursos [] recursos = new ClassPathResource [] {new ClassPathResource ("sys.properties")}; pspc.setLocations (recursos); pspc.SetigneNeunResolvablePlaceHolders (verdadero); devolver pspc;}Boot de primavera relacionada con
Spring Boot es realmente algo bueno, y se siente tan bien usarlo fuera de la caja. Aquí hay una breve introducción al contenido relevante.
Genere rápidamente un proyecto de arranque de primavera: https://start.spring.io/
Aplicación. Properties
Cada proyecto tiene un archivo Aplication.Properties de forma predeterminada. Este archivo de configuración no necesita registrarse como se mencionó anteriormente. Spring Boot nos ayudará a registrarnos automáticamente.
Por supuesto, tal vez pueda cambiar el nombre, solo especifique el nombre de su archivo al comenzar:
java -dspring.config.location = classpath: sys.properties -jar app.jar
aplicación- {env} .properties
Para especificar diferentes configuraciones para diferentes entornos, lo usaremos.
Por ejemplo, la información de conexión de la base de datos del entorno de prueba y el entorno de producción es diferente.
Por lo tanto, según la aplicación.
java -dspring.profiles.active = prd -jar app.jar
El resultado es que se registrarán las configuraciones en los archivos de Application.Properties y Application-Prd.Properties. Si hay claves duplicadas, la prioridad en los archivos de aplicación-prd.properties es mayor.
@ConfigurationProperties
Esta anotación solo está disponible en Spring Boot.
Incluso si no usa esta anotación, puede ver esto en un proyecto de código abierto. Aquí hay una breve introducción.
Tomemos un ejemplo para ser más intuitivos. Como se mencionó anteriormente, complete la siguiente información en el archivo de configuración, puede elegir escribir en Application.Properties o usar el método introducido en la primera sección.
javadoop.database.url = jdbc: mysql: javadoop.database.username = adminjavadoop.database.password = admin123456
Archivo Java:
@Configuration@ConfigurationProperties (prefix = "javadoop.database") Base de datos de clase pública {String url; Nombre de usuario de cadena; String contraseña; // getters and setters}De esta manera, una base de datos de Bean of Type se registra automáticamente en el contenedor de resorte, y las propiedades están configuradas.
Modificar dinámicamente los valores de los atributos durante el inicio
No creo que esto necesite demasiada introducción, y aquellos que usan el arranque de primavera básicamente deberían saberlo.
La configuración del atributo tiene un orden de anulación, es decir, cuando aparece la misma clave, prevalecerá el valor.
Parámetros de inicio> Application- {env} .properties> Application.Properties
Iniciar parámetros establece dinámicamente Propiedades:
java -djavadoop.database.password = admin4321 -jar app.jar
Además, también puede usar variables de entorno del sistema para establecer propiedades, especificar números aleatorios, etc., lo cual es muy flexible, pero es inútil, por lo que no lo presentaré.
Resumir
Si los lectores desean tener una comprensión más profunda de las propiedades de Spring, deben comprender el código fuente relacionado con la interfaz de entorno Spring. Se recomienda a los lectores interesados que busquen el código fuente.
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.