Spring加载properties文件的两种方式(配置文件、注解)

Jul 12, 2017 阅读(347)

标签: Spring

在实际项目中有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到properties文件中,源代码中读取properties里面的配置,这样后期只需要改动properties配置文件即可,不需要修改源代码这样更加方便,尤其是项目发布到生产环境后带来的方便就更为明细。

  • 通过xml方式加载properties文件

在我们项目中常见的场景有是数据库数据源的配置,开发的时候是一套配置、生产环境又时另外一个环境配置,因为我们将这些不同环境需要修改的一下参数写到配置文件中,然后我的代码直接读取配置文件。

jdbc.properties 配置文件:

jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.username=root
jdbc.url=jdbc:mysql://127.0.0.1:3306/blog?charset=utf8
jdbc.password=admin

applicationContent.xml 配置文件:

<bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">    
	<property name="driverClassName" value="${jdbc.driverClassName}"/>
	<property name="url" value="${jdbc.url}"/>
	<property name="username" value="${jdbc.username}"/>
	<property name="password" value="${jdbc.password}"/>
</bean>
<context:property-placeholder location="classpath:jdbc.properties"/>

Spring中context:property-placeholder location=""/>标签,可以用来加载properties配置文件,location是配置文件的路径,同时加载多个配置文件时location的值以逗号(,)分隔;


  • 通过代码中注解方式加载properties文件

现在项目中好多都基于注解的方式开发项目,因此有了使用注解方式来注入properties配置文件中的参数值。

system.properties 配置文件:

#用户图像(在服务器端)存储路径
#user_photo_save_path=E:\\GIT\\My\\xuexiyuan\\blog\\src\\main\\webapp\\resources\\upload\\images\\
useruser_photo_save_path=resources/upload/images/user

applicationContent.xml 配置文件:

<bean id="system" class="org.springframework.beans.factory.config.PropertiesFactoryBean">
	<property name="locations">
		<array>
			<value>classpath:system.properties</value>
		</array>
	</property>
</bean>

FileUploadImpl.java 代码:

@Service(value="fileUpload")
public class FileUploadImpl implements FileUpload {
	@Value("#{system.user_photo_save_path}")
	private String userPhotoSavePath;
	...

@Value 注解表示在spring容器中找id="system"的bean,读取properties配置文件的key=user_photo_save_path 值注入到实例变量 userPhotoSavePath中;