中廉建设网站,建设足球网站的心得和意义,合肥制作手机网站,做网站用什么在项目中如果有些参数经常需要修改#xff0c;或者后期可能需要修改#xff0c;那我们最好把这些参数放到properties文件中#xff0c;源代码中读取properties里面的配置#xff0c;这样后期只需要改动properties文件即可#xff0c;不需要修改源代码#xff0c;这样更加… 在项目中如果有些参数经常需要修改或者后期可能需要修改那我们最好把这些参数放到properties文件中源代码中读取properties里面的配置这样后期只需要改动properties文件即可不需要修改源代码这样更加方便。在Spring中也可以这么做而且Spring有两种加载properties文件的方式基于xml方式和基于注解方式。下面分别讨论下这两种方式。 1. 通过xml方式加载properties文件 我们以Spring实例化dataSource为例我们一般会在beans.xml文件中进行如下配置 [html] view plaincopy !-- com.mchange.v2.c3p0.ComboPooledDataSource类在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 -- bean iddataSource classcom.mchange.v2.c3p0.ComboPooledDataSource property namedriverClass valuecom.mysql.jdbc.Driver / property namejdbcUrl valuejdbc:mysql://localhost:3306/shop / property nameuser valueroot / property namepassword valueroot / /bean 现在如果我们要改变dataSource我们就得修改这些源代码但是我们如果使用properties文件的话只需要修改那里面的即可就不管源代码的东西了。那么如何做呢 Spring中有个context:property-placeholder location/标签可以用来加载properties配置文件location是配置文件的路径我们现在在工程目录的src下新建一个conn.properties文件里面写上上面dataSource的配置 [plain] view plaincopy dataSourcecom.mchange.v2.c3p0.ComboPooledDataSource driverClasscom.mysql.jdbc.Driver jdbcUrljdbc\:mysql\://localhost\:3306/shop userroot passwordroot 现在只需要在beans.xml中做如下修改即可 [html] view plaincopy context:property-placeholder locationclasspath:conn.properties/!-- 加载配置文件 -- !-- com.mchange.v2.c3p0.ComboPooledDataSource类在c3p0-0.9.5.1.jar包的com.mchange.v2.c3p0包中 -- bean iddataSource class${dataSource} !-- 这些配置Spring在启动时会去conn.properties中找 -- property namedriverClass value${driverClass} / property namejdbcUrl value${jdbcUrl} / property nameuser value${user} / property namepassword value${password} / /bean context:property-placeholder location/标签也可以用下面的bean标签来代替bean标签我们更加熟悉可读性更强 [html] view plaincopy !-- 与上面的配置等价下面的更容易理解 -- bean classorg.springframework.beans.factory.config.PropertyPlaceholderConfigurer property namelocations !-- PropertyPlaceholderConfigurer类中有个locations属性接收的是一个数组即我们可以在下面配好多个properties文件 -- array valueclasspath:conn.properties/value /array /property /bean 虽然看起来没有上面的context:property-placeholder location/简洁但是更加清晰建议使用后面的这种。但是这个只限于xml的方式即在beans.xml中用${key}获取配置文件中的值value。 2. 通过注解方式加载properties文件 还有一种就是通过注解的方式在java代码中使用Value注解来加载配置文件中的值。 我们来看一个例子假如我们要在程序中获取某个文件的绝对路径我们很自然会想到不能在程序中写死那么我们也可以卸载properties文件中。还是在src目录下新建一个public.properties文件假设里面写了一条记录 [plain] view plaincopy filePathE\:\\web\\apache-tomcat-8.0.26\\webapps\\E_shop\\image 如果想在java代码中通过注解来获取这个filePath的话首先得在beans.xml文件中配置一下注解的方式 [html] view plaincopy !-- 第二种方式是使用注解的方式注入主要用在java代码中使用注解注入properties文件中相应的value值 -- bean idprop classorg.springframework.beans.factory.config.PropertiesFactoryBean property namelocations!-- 这里是PropertiesFactoryBean类它也有个locations属性也是接收一个数组跟上面一样 array valueclasspath:public.properties/value /array /property /bean 现在我们可以在java代码中使用注解来获取filePath的值了 [java] view plaincopy Component(fileUpload) public class FileUploadUtil implements FileUpload { private String filePath; Value(#{prop.filePath}) //Value表示去beans.xml文件中找idprop的bean它是通过注解的方式读取properties配置文件的然后去相应的配置文件中读取keyfilePath的对应的value值 public void setFilePath(String filePath) { System.out.println(filePath); this.filePath filePath; } 注意要有set方法才能被注入进来注解写在set方法上即可。在setFilePath方法中通过控制台打印filePath是为了在启动tomcat的时候观察控制台有没有输出来如果有说明Spring在启动时已经将filePath给加载好了我们看一下控制台的启动信息 以上就是Spring加载properties配置文件的两种方式。实际上上面基于xml方式中的PropertyPlaceholderConfigurer类和这里基于注解方式的PropertiesFactoryBean类都是继承PropertiesLoaderSupport都是用来加载properties配置文件的。 如有错误之处欢迎留言指正~ 转载于:https://www.cnblogs.com/lantx/p/7497744.html