Spring对Properties文件的管理
一、通过util方式
util方式有两种方法,一种是通过配置bean方式,一种是通过标签方式。具体方式如下:
1、通过配置bean的方法
- <!-- 将多个配置文件位置放到列表中 -->
- <bean id="propertyResources" class="java.util.ArrayList">
- <constructor-arg>
- <list>
- <!-- 这里支持多种寻址方式:classpath和file -->
- <value>classpath:/opt/demo/config/db.properties</value>
- <!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->
- <value>file:/opt/demo/config/demo-mq.properties</value>
- <value>file:/opt/demo/config/demo-remote.properties</value>
- </list>
- </constructor-arg>
- </bean>
2、通过标签的方式
标签其实是对配置的一种简化的写法,看起来更简洁,但一次只能配置一个property文件,加载多个时需要配置多个util标签。另外在配置前物业添加上必须在XML中加入util名称空间(namespace)
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.1.xsd
"
具体的使用方式如下:
<util:properties id="remoteSettings" location="file:/opt/demo/config/demo-remote.properties" />
3、对util配置的properties引用方式如下:
(1).bean配置中的引用
<property name="driverClassName" value="#{remoteSettings['db.driver']}" />
<property name="url" value="#{remoteSettings['db.url']}" />
<property name="username" value="#{remoteSettings['db.userName']}" />
<property name="password" value="#{remoteSettings['db.password']}"/>
(2)java 类中通过注解方式的引用
- public class Client() {
- @Value("#{remoteSettings['remote.ip']}")
- private String ip;
- @Value("#{remoteSettings['remote.port']}")
- private String port;
- @Value("#{remoteSettings['remote.serviceName']}")
- private String service;
- }
当Bean中存在Properties类型的类变量需要以注入的方式初始化
- public class Client() {
- @Value("#{remoteSettings}")
- private Properties remoteSettings;
- }
二、通过Spring属性占位符PropertyPlaceholderConfigurer的使用
同样会有两种方式,一种是通过bean配置方式,一种是通过标签的方式
1、bean配置方式
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<!--
使用location属性定义单个配置文件
<property name="location">
<value>classpath:/com/zsw/config/jdbc.properties</value>
</property>
-->
<!-- 使用locations属性定义多个配置文件 -->
<property name="locations">
<list>
<value>classpath:/com/zsw/config/jdbc.properties</value>
</list>
</property>
</bean>
此种方式可以结合util配置方式一起使用,如下:
<!-- 用Spring加载和管理DB属性配置文件 -->
<bean id="dbPropertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="order" value="1" />
<property name="ignoreUnresolvablePlaceholders" value="true" />
<property name="locations" ref="remoteSettings" />
</bean>
2 、通过标签的方式
此标签是在spring3.0以后引用的
- <context:property-placeholder location="userinfo.properties"/>
PropertyPlaceholderConfigurer内置的功能非常丰富,如果它未找到${xxx}中定义的xxx键,它还会去JVM系统属性(System.getProperty())和环境变量(System.getenv())中寻找。通过启用systemPropertiesMode和searchSystemEnvironment属性,开发者能够控制这一行为
3、bean配置中对占位符的使用
- bean name="userInfo" class="test.UserInfo">
- <property name="username" value="${db.username}"/>
- <property name="password" value="${db.password}"/>
- </bean>
/***--------------------------------------------------分割线 -------------------------------------**/
spring对各种第三方插件都做了很好的支持,同样也对Apache公司提交的配置管理插件提供了很好的支持,通过从数据库中读出配置信息的方式很好的解决了环境差异的问题,集成的方法如下:
引用所使用的jar包:
<!-- configuration to db support -->
<dependency>
<groupId>commons-configuration</groupId>
<artifactId>commons-configuration</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.springmodules</groupId>
<artifactId>spring-modules-jakarta-commons</artifactId>
<version>0.8a</version>
<exclusions>
<exclusion>
<groupId>xerces</groupId>
<artifactId>xerces</artifactId>
</exclusion>
<exclusion>
<groupId>org.springframework</groupId>
<artifactId>spring-support</artifactId>
</exclusion>
<exclusion>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
</exclusion>
<exclusion>
<artifactId>commons-chain</artifactId>
<groupId>commons-chain</groupId>
</exclusion>
</exclusions>
</dependency>
具体的配置信息如下:
<?xml version="1.0" encoding="utf-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd">
<description>从数据库装入配置到 propertyConfigurer</description>
<!-- 方式一-->
<!-- <context:property-placeholder properties-ref="applicationProperties" /> -->
<!-- 方式二 -->
<bean id="propertyConfigurer"
class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="properties" ref="applicationProperties">
</property>
</bean>
<bean name="applicationProperties" class="org.springmodules.commons.configuration.CommonsConfigurationFactoryBean">
<constructor-arg ref="databaseConfiguration" />
</bean>
<bean name="databaseConfiguration" class="org.apache.commons.configuration.DatabaseConfiguration">
<constructor-arg index="0" ref="dataSource" />
<constructor-arg index="1" value="T_APP_PROPERTIES" />
<constructor-arg index="2" value="APP_ID" />
<constructor-arg index="3" value="KEY_" />
<constructor-arg index="4" value="VALUE_" />
<constructor-arg index="5" value="test" />
</bean>
</beans>
对Apache DatabaseConfiguration 的使用可以参考其它文档信息
其中配置的构造参数很容易通过读代码看出来,第0个是数据源、第1个是表名、第2、3、4分别对应表中的字段,第5个字段表示的是第2个字段的值,即 APP_ID="test";KEY_ 对应前面的"db.username",VALUE_为对应的值
相关推荐
在Spring框架中,读取和使用Properties文件是一种常见的配置方式,尤其当涉及到数据库连接、环境变量等需要在运行时动态加载或更改的信息时。本文将深入解析如何在Spring环境中读取Properties文件,包括配置步骤、...
在Java编程中,`properties`文件是一种常用的配置文件格式,用于存储应用的配置参数或设置。这些文件通常以键值对的形式存在,如`key=value`。本篇将详细讲解如何在Java中读取`properties`文件并将其内容转换为`Map`...
Spring框架提供了强大的属性配置管理,能够帮助开发者轻松地读取和使用properties文件中的key-value对。本教程将深入探讨如何在Spring中以不同的方式读取properties文件,以便更好地理解和应用这些配置。 首先,...
当我们的应用程序被打包成JAR文件后,有时我们需要从JAR内部读取配置文件,例如application.properties或application.yml。本文将深入探讨如何在Spring框架中实现这一功能。 首先,理解Spring的资源配置。Spring...
在Spring框架中,读取properties文件主要通过两种方式:`PropertyPlaceholderConfigurer` 和 `@Value` 注解。 1. **PropertyPlaceholderConfigurer**: 这是一个Spring的bean定义类,它允许我们从properties文件中...
本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`这两种不同的上下文环境来加载它们。 首先,让我们了解`...
在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...
在Spring框架中,读取`properties`配置文件是常见的任务,用于管理应用程序的配置信息,如数据库连接字符串、服务端口、系统环境变量等。本文将深入探讨如何在Spring项目中实现这一功能。 首先,我们需要一个`...
在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以键值对的形式存在。这些文件在程序运行时可以被加载并解析,以便应用根据配置内容进行动态行为调整。本篇将深入探讨如何使用Java来实现Properties...
在Java编程中,读取`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统参数等。`.properties`文件是一种基于键值对的文本格式,易于理解和编辑。在这个场景中,我们将探讨...
在上面的配置中,`${db.driver}`、`${db.url}`、`${db.username}`和`${db.password}`都是从Properties文件中读取的属性值。Spring会自动替换这些占位符,使得我们的数据源bean能够正确连接到数据库。 除了上述方法...
问题二:Service 中无法读取 properties 文件数据 在 Service 中,如果配置的路径是 classpath:config.properties,可能会出现多个文件的情况。这时,需要将路径改为 classpath*:config.properties,以便加载所有的...
Spring框架中,读取Properties文件是一个非常重要的步骤,Properties文件中存储着应用程序的配置信息,如数据库连接信息、Server配置信息等。在Spring应用程序中,我们可以使用@Value注解来读取Properties文件中的值...
在Java编程中,`properties`文件是一种常用的存储配置信息的方式,它以键值对的形式组织数据,便于程序在运行时动态获取和修改配置。本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`...
标题 "sftp直接以url模式读取-----------包括servlet如何借用springproperties取文件" 提到的是在Java开发中,如何通过SFTP(Secure File Transfer Protocol)协议以URL模式读取远程文件,并结合SpringProperties来...
在Java编程中,`properties`文件是一种常用的配置文件格式,用于存储程序的配置信息,如数据库连接字符串、系统参数等。这些数据以键值对的形式存在,键与值之间用等号(=)或冒号(:)分隔。本篇文章将详细探讨如何...
为了读取YAML配置,你需要在Spring Boot应用的启动类或者其他适当的初始化点,注册`@EnableConfigurationProperties`注解,指定配置属性类。例如,如果你有一个名为`ConfigProps`的类,其中包含了YAML文件中的属性:...
其中一个非常重要的功能就是 Properties 文件的加载和读取,今天我们来讲解一下如何在Spring中加载和读取多个Properties文件。 Properties 文件是一种常用的配置文件格式,用于存储应用程序的配置信息,例如数据库...
以下将详细介绍Spring Boot读取配置文件的常用方法。 1. **属性文件** Spring Boot默认支持两种主要的属性文件格式:`application.properties`和`application.yml`。前者使用键值对形式,后者使用YAML(YAML Ain't...
在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以.properties为扩展名。这些文件包含了应用程序运行时所需的键值对,如数据库连接字符串、API密钥或系统设置等。本篇将深入探讨如何读取和修改...