Spring中使用属性文件properties的两种方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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做相应的添加修改。
以上是关于Spring中使用属性文件properties的两种方式的主要内容,如果未能解决你的问题,请参考以下文章
spring 配置文件 引入外部的property文件的两种方法