`
huttoncs
  • 浏览: 200882 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Spring 常用基础点汇总(二)Spring中Properties文件读取

 
阅读更多

 

 Spring对Properties文件的管理

 

一、通过util方式

   util方式有两种方法,一种是通过配置bean方式,一种是通过标签方式。具体方式如下:

 1、通过配置bean的方法

   

  1.  <!-- 将多个配置文件位置放到列表中 -->  
  2.     <bean id="propertyResources" class="java.util.ArrayList">  
  3.         <constructor-arg>  
  4.             <list>  
  5.               <!-- 这里支持多种寻址方式:classpath和file -->  
  6.               <value>classpath:/opt/demo/config/db.properties</value>  
  7.               <!-- 推荐使用file的方式引入,这样可以将配置和代码分离 -->  
  8.               <value>file:/opt/demo/config/demo-mq.properties</value>  
  9.               <value>file:/opt/demo/config/demo-remote.properties</value>  
  10.             </list>  
  11.         </constructor-arg>  
  12.     </bean> 
  13.  

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 类中通过注解方式的引用

   

  1. public class Client() {  
  2.     @Value("#{remoteSettings['remote.ip']}")  
  3.     private String ip;  
  4.     @Value("#{remoteSettings['remote.port']}")  
  5.     private String port;  
  6.     @Value("#{remoteSettings['remote.serviceName']}")  
  7.     private String service;  
  8. }  

Bean中存在Properties类型的类变量需要以注入的方式初始化

  1. public class Client() {  
  2.     @Value("#{remoteSettings}")  
  3.     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以后引用的

  1. <context:property-placeholder location="userinfo.properties"/> 

PropertyPlaceholderConfigurer内置的功能非常丰富,如果它未找到${xxx}中定义的xxx键,它还会去JVM系统属性(System.getProperty())和环境变量(System.getenv())中寻找。通过启用systemPropertiesMode和searchSystemEnvironment属性,开发者能够控制这一行为

 

3、bean配置中对占位符的使用

  1. bean name="userInfo" class="test.UserInfo">  
  2.   <property name="username" value="${db.username}"/>  
  3.   <property name="password" value="${db.password}"/>  
  4. </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文件是一种常见的配置方式,尤其当涉及到数据库连接、环境变量等需要在运行时动态加载或更改的信息时。本文将深入解析如何在Spring环境中读取Properties文件,包括配置步骤、...

    读取properties文件返回map

    在Java编程中,`properties`文件是一种常用的配置文件格式,用于存储应用的配置参数或设置。这些文件通常以键值对的形式存在,如`key=value`。本篇将详细讲解如何在Java中读取`properties`文件并将其内容转换为`Map`...

    Spring 读取properties文件key+value方式.rar

    Spring框架提供了强大的属性配置管理,能够帮助开发者轻松地读取和使用properties文件中的key-value对。本教程将深入探讨如何在Spring中以不同的方式读取properties文件,以便更好地理解和应用这些配置。 首先,...

    spring读取jar中的配置文件

    当我们的应用程序被打包成JAR文件后,有时我们需要从JAR内部读取配置文件,例如application.properties或application.yml。本文将深入探讨如何在Spring框架中实现这一功能。 首先,理解Spring的资源配置。Spring...

    SSM 读取properties文件

    在Spring框架中,读取properties文件主要通过两种方式:`PropertyPlaceholderConfigurer` 和 `@Value` 注解。 1. **PropertyPlaceholderConfigurer**: 这是一个Spring的bean定义类,它允许我们从properties文件中...

    spring读取配置文件

    本篇文章将深入探讨如何在Spring中读取不同目录下的配置文件,以及使用`ClassPathXmlApplicationContext`和`FileSystemXmlApplicationContext`这两种不同的上下文环境来加载它们。 首先,让我们了解`...

    Spring Boot多模块配置文件读取

    在Spring Boot应用中,多模块配置文件的读取是一个重要的实践,它有助于提高代码的可维护性和模块化。本文将详细探讨如何在Spring Boot的多模块项目中管理和使用不同的配置文件,以实现低耦合的设计。 首先,了解...

    spring-demo09-读取properties配置文件内容.zip

    在Spring框架中,读取`properties`配置文件是常见的任务,用于管理应用程序的配置信息,如数据库连接字符串、服务端口、系统环境变量等。本文将深入探讨如何在Spring项目中实现这一功能。 首先,我们需要一个`...

    java实现properties文件读取

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以键值对的形式存在。这些文件在程序运行时可以被加载并解析,以便应用根据配置内容进行动态行为调整。本篇将深入探讨如何使用Java来实现Properties...

    读取.properties文件

    在Java编程中,读取`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息,如数据库连接字符串、系统参数等。`.properties`文件是一种基于键值对的文本格式,易于理解和编辑。在这个场景中,我们将探讨...

    Spring3.0 配置文件中加载Properties文件的小例子

    在上面的配置中,`${db.driver}`、`${db.url}`、`${db.username}`和`${db.password}`都是从Properties文件中读取的属性值。Spring会自动替换这些占位符,使得我们的数据源bean能够正确连接到数据库。 除了上述方法...

    spring无法读取properties文件数据问题详解

    问题二:Service 中无法读取 properties 文件数据 在 Service 中,如果配置的路径是 classpath:config.properties,可能会出现多个文件的情况。这时,需要将路径改为 classpath*:config.properties,以便加载所有的...

    Spring用代码来读取properties文件实例解析

    Spring框架中,读取Properties文件是一个非常重要的步骤,Properties文件中存储着应用程序的配置信息,如数据库连接信息、Server配置信息等。在Spring应用程序中,我们可以使用@Value注解来读取Properties文件中的值...

    java读取properties配置文件

    在Java编程中,`properties`文件是一种常用的存储配置信息的方式,它以键值对的形式组织数据,便于程序在运行时动态获取和修改配置。本文将详细介绍如何在Java中读取`properties`配置文件。 首先,我们需要了解`...

    sftp直接以url模式读取-----------包括servlet如何借用springproperties取文件

    标题 "sftp直接以url模式读取-----------包括servlet如何借用springproperties取文件" 提到的是在Java开发中,如何通过SFTP(Secure File Transfer Protocol)协议以URL模式读取远程文件,并结合SpringProperties来...

    JAVA读取properties文件的值

    在Java编程中,`properties`文件是一种常用的配置文件格式,用于存储程序的配置信息,如数据库连接字符串、系统参数等。这些数据以键值对的形式存在,键与值之间用等号(=)或冒号(:)分隔。本篇文章将详细探讨如何...

    在非spring注解类中使用spring容器中的bean_普通类中使用yml配置文件中的配置信息

    为了读取YAML配置,你需要在Spring Boot应用的启动类或者其他适当的初始化点,注册`@EnableConfigurationProperties`注解,指定配置属性类。例如,如果你有一个名为`ConfigProps`的类,其中包含了YAML文件中的属性:...

    Spring加载配置和读取多个Properties文件的讲解

    其中一个非常重要的功能就是 Properties 文件的加载和读取,今天我们来讲解一下如何在Spring中加载和读取多个Properties文件。 Properties 文件是一种常用的配置文件格式,用于存储应用程序的配置信息,例如数据库...

    Spring Boot读取配置文件常用方式

    以下将详细介绍Spring Boot读取配置文件的常用方法。 1. **属性文件** Spring Boot默认支持两种主要的属性文件格式:`application.properties`和`application.yml`。前者使用键值对形式,后者使用YAML(YAML Ain't...

    读取以及修改properties文件

    在Java编程中,Properties文件是用于存储配置信息的文本文件,通常以.properties为扩展名。这些文件包含了应用程序运行时所需的键值对,如数据库连接字符串、API密钥或系统设置等。本篇将深入探讨如何读取和修改...

Global site tag (gtag.js) - Google Analytics