zoukankan      html  css  js  c++  java
  • Spring中使用属性文件properties的两种方式

    实际项目中,通常将可配置的参数放到属性文件中,例如数据库连接信息、redis连接信息等,便于统一管理。然后通过IoC框架spring将其加载到上下文中,使得程序可以直接使用。

    创建mysql.properties文件,并置于CLASSPATH路径中,如果使用maven构建工程,直接放置在resources文件夹下。文件内容:

    mysql.url=jdbc:mysql://192.168.1.101:3306/demo
    mysql.username=root
    mysql.password=123456

    在spring容器启动时,使用内置bean对属性文件信息进行加载,在applicationContext.xml中添加:

    <!-- spring的属性加载器,加载properties文件中的属性 -->
    <bean id="propertyConfigurer"
        class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
        <property name="location">
            <value>mysql.properties</value>
        </property>
        <property name="fileEncoding" value="UTF-8" />
    </bean>

    属性信息加载后其中一种使用方式是在其它bean定义中直接根据属性信息的key引用value,如邮件发送器bean的配置: 

    <!-- 配置数据源 -->
    <bean id="dataSource" class="org.apache.commons.dbcp2.BasicDataSource">
        <property name="driverClassName" value="com.mysql.cj.jdbc.Driver" />
        <property name="url" value="${mysql.url}" />
        <property name="username" value="${mysql.username}" />
        <property name="password" value="${mysql.password}" />
    </bean>

    另一种使用方式是在代码中获取配置的属性信息,可定义一个java bean:RedisConfig.java,利用注解将代码中需要使用的属性信息注入。如属性文件中有如下信息需在代码中获取使用: 

    redis.host=192.168.1.101
    redis.port=6379

    RedisConfig.java对应的代码:

     1 package org.springinaction.weather.config;
     2 
     3 import org.springframework.beans.factory.annotation.Value;
     4 import org.springframework.stereotype.Component;
     5 
     6 @Component("redisConfig")
     7 public class RedisConfig {
     8 
     9     @Value("${redis.host}")
    10     private String host;
    11 
    12     @Value("${redis.port}")
    13     private String port;
    14 
    15     public String getHost() {
    16         return host;
    17     }
    18 
    19     public String getPort() {
    20         return port;
    21     }
    22 }

    通过get方法获取对应的属性信息:

     1 import org.springframework.context.ApplicationContext;
     2 import org.springframework.context.support.ClassPathXmlApplicationContext;
     3 import org.springinaction.weather.config.RedisConfig;
     4 
     5 public class RedisTest {
     6 
     7     public static void main(String[] args) {
     8         ApplicationContext context = new ClassPathXmlApplicationContext("spring-redis.xml");
     9         RedisConfig redisConfig = context.getBean(RedisConfig.class);
    10         System.out.println(redisConfig.getHost());
    11         System.out.println(redisConfig.getPort());
    12     }
    13 
    14 }

    通过get方法获取对应的属性信息,优点是代码中使用方便,缺点是如果代码中需用到新的属性信息,需对RedisConfigjava做相应的添加修改。 

  • 相关阅读:
    perl 监控网站域名劫持
    OpenLayers访问Geoserver发布的地图
    基于OpenLayers的地图封装Javascript类定义
    Linux_正则表达式
    Linux_正则表达式
    帆软出品: 7点搞定制药企业数据分析系统开发需求
    帆软出品: 7点搞定制药企业数据分析系统开发需求
    Geoserver地图样式SLD资料收集
    GeoServer地图开发解决方案:地图数据处理篇
    Geoserver发布shapfile,中文字段乱码问题
  • 原文地址:https://www.cnblogs.com/warehouse/p/6885113.html
Copyright © 2011-2022 走看看