Maven项目中读取src/main/resources目录下的配置文件
在Maven项目的开发中,当需要读取src/下的配置文件时,该怎么做?
我们假设Resources下有一个文件名为kafka.properties的配置文件(为什么用kafka.properties,因为这是在做kafka项目的时候碰到的问题,在网上查到了不少信息,索性当个搬运工,再根据自己的理解整理一下)
1.在java类中读取
若配置文件不在src/main/resources目录下,可以直接使用
-
Properties prop = new properties();
-
prop.load(new InputStream("kafka.properties"));
当配置文件放在src/main/resources的目录下时,只能使用Class.getResourceAsStream()方法来加载
-
Properties prop = new properties();
-
prop.load(this.getClass().getResourceAsStream("/kafka.properties"));
此时,getResourceAsStream(String name)方法中参数路径的写法:
1).若写成"kafka.properties",则是去当前类的class文件同一目录下找(但是显然在正常项目不会有人将配置文件放在这种位置)。
2).若写成"/kafka.properties",则是去整个项目的classes目录下去找,即target/classes
2.在spring框架的xml文件中读取
首先我们先随便写个配置文件kafka.properties
-
kafka.topic=topic
-
serializer.class=kafka.serializer.StringEncoder
-
key.serializer.class=kafka.serializer.StringEncoder
以下就有两种方法来调用
1).首先可以在spring的bean中配置
-
<bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-
<property name="locations">
-
<list>
-
<value>/kafka.properties</value>
-
</list>
-
</property>
-
</bean>
这里还可以在list标签中配置多个value,这样就可以在bean中读取一个甚至多个配置文件。
-
<bean id="kafkaService" class="com.wws.service.impl.KafkaServiceImpl">
-
<!-- <property name="topic"><value>topic</value></property> -->
-
<property name="topic"><value>${kafka.topic}</value></property>
-
</bean>
这样就可以在后面的bean中成功调用配置文件中的参数,以上被注释的那段property和被注释掉的那行是同样效果
2).或者也可以使用如下方法
<context:property-placeholder location="classpath:kafka.properties"/>
直接在spring配置文件中配置context:property-placeholder,有多个配置文件可以用逗号隔开,例如
<context:property-placeholder location="classpath:kafka.properties,classpath:jdbc.properties"/>
调用的方法跟1).中一样,这里就不重复了
Maven项目中读取src/main/resources目录下的配置文件的更多相关文章
- maven项目无法读取src/main/java目录下的配置文件解决方法
我们在用Mybatis去操作底层数据库的时候,需要用到xml配置文件,一般我们是把配置文件和dao放置在同一层目录.但是在用idea操作maven项目的时候,我们可能会遇到无法读取到dao对应的map ...
- 解决idea中maven项目无法读取src/main/java目录下面的配置文件问题
解决idea中maven项目无法读取src/main/java目录下面的配置文件问题 当我们在maven项目中使用Mybatis的时候,需要给Mybatis配置核心xml文件(MyBatis-Conf ...
- 解决maven项目无法读取src/main/java目录下面的配置文件问题
我们在用Mybatis去操作底层数据库的时候,需要用到xml配置文件,一般我们是把配置文件和dao放置在同一层目录. 但是在用idea操作maven项目的时候,我们可能会遇到无法读取到dao对应的ma ...
- 解决eclipse maven工程中src/main/resources目录下创建的文件夹所显示样式不是文件夹,而是"包"图标样式的问题
参考:http://blog.csdn.net/luwei42768/article/details/72268246 eclipse项目中创建maven项目后,有时在执行命令maven update ...
- maven项目自动创建src/main/resources等四个资源文件夹
如何使maven项目自动创建这四个文件夹:src/main/resources.src/main/java.src/test/java.src/test/resources 网传甚广的在Config ...
- Springboot:没有src/main/resources目录(引入图片时(或静态资源时)发现没有该目录)
今天想在Springboot项目想引进静态资源时,发现自己的项目里没有教程里面的 src/main/resources这个目录,目录如下 我的项目目录结构是这样的,但是还不是很清楚下面的那个src目录 ...
- IDEA中不编译src/main/java目录下的*.xml文件
使用idea构建maven项目时不编译src/main/java目录下写的mapper.xml文件,这是找到pom.xml文件,在<build>节点下添加如下代码: <!-- map ...
- [转]Maven项目读取src.main.resources下的文件
要取编译后的路径,而不是你看到的src/main/resources的路径.如下: URL url = MyTest.class.getClassLoader().getResource(" ...
- eclipse中新建maven项目无法添加src/main/java问题
eclipse创建maevn web项目,在选择maven_archetype_web原型后,默认只有src/main/resources这个Source Floder. 按照maven目录结构,添加 ...
随机推荐
- 洛谷 P1599 结算日
洛谷 P1599 结算日 题目描述 “不放债不借债”,贝西多么希望自己可以遵循这个忠告.她已经和她的N(1 <= N <= 100,000)个朋友有了债务关系,或者借债了,或者放债了.她的 ...
- RMAN冷备份、一致性备份脚本
RMAN冷备份.一致性备份脚本 run{ shutdown immediate; startup mount; allocate channel c1 type disk; allocate chan ...
- 【hdu 1403】Longest Common Substring
[链接]h在这里写链接 [题意] 求两个串的最长公共子串. [题解] Sa[i]表示的是字典序为i的后缀的起始位置. 可以把两个字符串合在一起(中间用一个比'z'大的字符分割); 则如果Sa[i-1] ...
- 开发板 视频04_05 ubuntu的联网及基本设置
4g内存 如果电脑有两g,只能给1.5g 处理器可以根据实际选 usb3.0 或者 2.0 联网模式:: 桥接模式 启动式连接,,,,网是不固定的 仅主机模式,主机和虚拟机在一个网络 第三种联网,自定 ...
- iOS ASIHTTPRequest
ASIHTTPRequest对CFNetwork API进行了封装,并且使用起来非常简单,用Objective-C编写,可以很好的应用在Mac OS X系统和iOS平台的应用程序中.ASIHTTPRe ...
- IOS计算两点之间的距离
//广州经纬度 CLLocationCoordinate2D guangZhouLocation; guangZhouLocation.latitude = 23.20; guangZhouLocat ...
- 结合Wireshark捕获分组深入理解TCP/IP协议栈
摘要: 本文剖析了浏览器输入URL到整个页面显示的整个过程,以百度首页为例,结合Wireshark俘获分组进行详细分析整个过程,从而更好地了解TCP/IP协议栈. 一.俘获分组 1.1 准 ...
- 36、ALSA声卡驱动和应用
(注意:内核上电的时候会把一些没运行的控制器模块的时钟都关掉,所有在写驱动的时候需要在使用的使用使用clk_get和clk_enable使能时钟) (说明:与ALSA声卡对应的是OSS架构,第二期视频 ...
- redis学习笔记之虚拟内存
首先说明下redis的虚拟内存与os的虚拟内存不是一码事,但是思路和目的都是相同的.就是暂时把不经常访问的数据从内存交换到磁盘中,从而腾出宝贵的 内存空间用于其他需要访问的数据.尤其是对于redis这 ...
- Deep Learning for Nature Language Processing --- 第四讲(下)
A note on matrix implementations 将J对softmax的权重W和每一个word vector进行求导: 尽量使用矩阵运算(向量化).不要使用for loop. 模型训练 ...