zoukankan      html  css  js  c++  java
  • maven工程读取resource下配置文件

    maven工程读取resource下配置文件

    在maven工程中,我们会将配置文件放到,src/main/resources   下面,例如

    我们需要确认resource 下的文件 编译之后存放的位置

    它编译的路径直接位于classes下面,这个路径其实就是classPath的路径,所以,在resources 根目录下的配置文件其实就是 classPath的路径

    1 public static void main(String[] args) throws ParserConfigurationException, Exception{
    2         ClassLoader classLoader = TestDom.class.getClassLoader();
    3         URL resource = classLoader.getResource("test.xml");
    4         String path = resource.getPath();
    5         System.out.println(path);
    6         InputStream resourceAsStream = classLoader.getResourceAsStream("test.xml");

    这样我们就可以直接拿到路径,调用 getResourceAsStream 方法 可以直接拿到目标文件的输入流


    在Maven项目的开发中,当需要读取src/下的配置文件时,该怎么做?

    我们假设Resources下有一个文件名为kafka.properties的配置文件(为什么用kafka.properties,因为这是在做kafka项目的时候碰到的问题,在网上查到了不少信息,索性当个搬运工,再根据自己的理解整理一下)

    1.在java类中读取
    若配置文件不在src/main/resources目录下,可以直接使用

    [java] view plain copy
     
    1. Properties prop = new properties();  
    2. prop.load(new InputStream("kafka.properties"));  

    当配置文件放在src/main/resources的目录下时,只能使用Class.getResourceAsStream()方法来加载

    [java] view plain copy
     
    1. Properties prop = new properties();  
    2. 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

    [plain] view plain copy
     
    1. kafka.topic=topic  
    2. serializer.class=kafka.serializer.StringEncoder  
    3. key.serializer.class=kafka.serializer.StringEncoder  

    以下就有两种方法来调用

    1).首先可以在spring的bean中配置

    [html] view plain copy
     
    1. <bean id="propertyConfigurer" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">  
    2. <property name="locations">  
    3. <list>  
    4. <span style="white-space:pre;"</span><value>/kafka.properties</value>  
    5. </list>  
    6. </property>  
    7. </bean>  

    这里还可以在list标签中配置多个value,这样就可以在bean中读取一个甚至多个配置文件。

    [html] view plain copy
     
    1. <bean id="kafkaService" class="com.wws.service.impl.KafkaServiceImpl">  
    2.     <!-- <property name="topic"><value>topic</value></property> -->  
    3.     <property name="topic"><value>${kafka.topic}</value></property>  
    4. </bean>  

    这样就可以在后面的bean中成功调用配置文件中的参数,以上被注释的那段property和被注释掉的那行是同样效果
    2).或者也可以使用如下方法

    [html] view plain copy
     
    1. <context:property-placeholder location="classpath:kafka.properties"/>  

    直接在spring配置文件中配置context:property-placeholder,有多个配置文件可以用逗号隔开,例如

    [html] view plain copy
     
    1. <context:property-placeholder location="classpath:kafka.properties,classpath:jdbc.properties"/>  

    调用的方法跟1).中一样,这里就不重复了

  • 相关阅读:
    zabbix:乱码问题
    zabbix--微信报警(未完成)
    ansible-playbook项目(4)
    ansible-playbook(3)
    备份和校验脚本-邮件通知
    rsync
    keepalived
    双机热备
    nginx负载均衡
    LNMP(5)
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8149040.html
Copyright © 2011-2022 走看看