zoukankan      html  css  js  c++  java
  • classpath 及读取 properties 文件

    java代码中获取项目的静态文件,如获取 properties 文件内容是必不可少的。

    Spring 下只需要通过 @Value 获取配置文件值

    <!-- 资源文件-->
    <util:properties id="application" location="classpath:config.properties" />
    @Value("#{application['pom.credit.url']}")
    private void setCreditUrl(String url){
       this.creditUrl = url;
    }

    Spring boot 下我们只需要在 config 目录下的 application.yml 中写入配置值如:

    local-info:
        school-id: test
    通过 @ConfigurationProperties 注解加载 local-info 下的配置,通过 set 方法注入 school-id 

    @ConfigurationProperties(prefix="local-info")
    @Component
    public class LocalConfigEntity {
        private String schoolId;
    之后再需要用到 schoolId 则通过 get 方法获取值

    上面简单的提及下通过框架我们可以很容易获取到配置文件账值,但当我们离开这些框架,该如何读取这些配置文件,上图解:


    用 Properties 类读取 properties 文件

    static {
       Properties prop = new Properties();
       InputStream in = UserUtil.class.getResourceAsStream("/config.properties");
       try {
          prop.load(in);
          param1 = prop.getProperty("param1").trim();
          param2 = prop.getProperty("param2").trim();
       } catch (IOException e) {
          e.printStackTrace();
       }
    }
    

    这里补充 classpath 路径说明

     classpath 路径在每个J2ee项目中都会用到,即WEB-INF下面的classes目录,所有src目录下面的java、xml、properties等文件编译后都会在此,所以在开发时常将相应的xml配置文件放于src或其子目录下;

              引用classpath路径下的文件,只需在文件名前加classpath:(需保证该文件确实位于classpath路径下);

    如:

    Xml代码  收藏代码
    1. <param-value>classpath:applicationContext-*.xml</param-value>  

    或者引用其子目录下的文件,如  

    Xml代码  收藏代码
    1. <param-value>classpath:context/conf/controller.xml</param-value>  

     classpath* 的使用:当项目中有多个classpath路径,并同时加载多个classpath路径下(此种情况多数不会遇到)的文件,*就发挥了作用,如果不加*,则表示仅仅加载第一个classpath路径,代码片段: 

    Xml代码  收藏代码
    1. <param-value>classpath*:context/conf/controller*.xml</param-value>  

     ########################################################

    首先  classpath是指 WEB-INF文件夹下的classes目录 
    解释classes含义: 
    1.存放各种资源配置文件 eg.init.properties log4j.properties struts.xml 
    2.存放模板文件         eg.actionerror.ftl 
    3.存放class文件       对应的是项目开发时的src目录编译文件 
    总结:这是一个定位资源的入口 

    如果你知道开发过程中有这么一句话:惯例大于配置 那么也许你会改变你的想法 
    对于第二个问题  
    这个涉及的是lib和classes下文件访问优先级的问题:  lib>classes 
    对于性能的影响应该不在这个范畴 

     ########################################################

    注意: 
    用classpath*:需要遍历所有的classpath,所以加载速度是很慢的,因此,在规划的时候,应该尽可能规划好资源文件所在的路径,尽量避免使用 classpath* 

    网上还提到了用反射获取 properties 文件路径:

    Java项目中读取properties文件,以及六种获取路径的方法

    五种方式让你在java中读取properties文件内容不再是难题


  • 相关阅读:
    C#实现RSA加密与解密、签名与认证
    RSA公钥加密,私钥解密的程序示例
    C#中自定义属性的例子
    HTTPS简单原理介绍
    深入浅出HTTPS基本原理
    WebClient请求帮助类
    WebApi安全性 使用TOKEN+签名验证
    jsvascript === 和==的区别
    UML中的图的出现顺序
    UML从需求到实现----用例
  • 原文地址:https://www.cnblogs.com/molashaonian/p/8569922.html
Copyright © 2011-2022 走看看