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).中一样,这里就不重复了

  • 相关阅读:
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台读写 Sqlite 提示 no such table 找不到文件
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 控制台 Hangfire 后台定时任务
    dotnet 获取指定进程的输入命令行
    dotnet 获取指定进程的输入命令行
    PHP sqrt() 函数
    PHP sinh() 函数
    PHP sin() 函数
    PHP round() 函数
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/8149040.html
Copyright © 2011-2022 走看看