在实际项目中有些参数经常需要修改,或者后期可能需要修改,那我们最好把这些参数放到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中;