java 实现web项目启动加载properties属性文件

 更新时间:2021年08月24日 17:19:26   作者:java开发鼻祖  
这篇文章主要介绍了java 实现web项目启动加载properties属性文件,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

web项目启动加载properties属性文件

最近做项目,发现框架里面封装的项目一启动加载所有的properties文件挺方便好用的就自己动手写了一个.

1、首先要想在项目启动的时候就加载properties文件

就必需在web.xml中配置一个加载properties文件的监听器(listener);

<!-- Properties文件的监听器 -->
    <listener>
        <description>ServletContextListener</description>
        <listener-class>com.lvqutour.utils.PropertyFileUtils</listener-class>
    </listener>

2、在web.xml文件中配置好了监听器之后

接下来我们就要实现监听器中的类com.lvqutour.utils.PropertyFileUtils,本人做的方法是将该类实现ServletContextListener接口,主要然后主要是重写里面的init方法,现在项目启动的时候就会加载application.local.properties文件了.

import javax.servlet.ServletContextEvent;
import javax.servlet.ServletContextListener;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
 
/**
 * Created with IntelliJ IDEA.
 * Date: 2018/3/13 13:06
 * User: pc
 * Description:自定义properties文件读取工具类
 */
 
public class PropertyFileUtils implements ServletContextListener {
    private static Properties prop = new Properties();
    @Override
    public void contextInitialized(ServletContextEvent sce) {
        InputStream inputStream;
        try {
            inputStream = getClass().getResourceAsStream("/XXX.properties");
            if(inputStream != null){
                prop.load(inputStream);
            }
        } catch (IOException ex) {
            ex.printStackTrace();
        }
    }
 
    @Override
    public void contextDestroyed(ServletContextEvent sce) {  
    }
 
    public static String get(String params){
        return prop.getProperty(params);
    }
}

3、当然为了不让项目启动报错

我们必需在项目的resources中新建一个XXX.properties文件.

#微信支付相关 
#密钥
KEY = longshengwenhuaweixiangmingWXpay
#连接超时时间(毫秒)
CONNECT_TIME_OUT = 10000

4、文件建好之后

我们这时要在其他类中获取该文件的路径,这样大家可以回过头来看一下在PropertyFileUtils类中有一个get()方法,这就是为给其他类获取文件中的属性提供的方法.其中params为.properties文件的键.

String key = PropertyFileUtils.get("KEY");//密钥
int CONNECT_TIME_OUT = Integer.parseInt(PropertyFileUtils.get("CONNECT_TIME_OUT"));//连接超时时间

项目启动加载属性文件有对我们获取属性文件中的属性打非常方便不用每次都要去建流,然后去读属性文件.

PS:如果是在Controller里需要获取resource.properties里的值,可直接使用@value注解:

@Value("${KEY}")
private String key;//密钥
@Value("${CONNECT_TIME_OUT}")
private int CONNECT_TIME_OUT;//连接超时时间

出现加载java的properties配置文件空指针报错

刚开始把properties配置文件放在了与引用它的java文件并列的src下自定义的文件包下面, 结果一直都报空指针异常, 找不到路径

解决

后来移动到src根目录下面就ok了...应该是一种配置文件的规定吧...

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • java常用工具类 XML工具类、数据验证工具类

    java常用工具类 XML工具类、数据验证工具类

    这篇文章主要为大家详细介绍了java常用工具类,包括XML工具类、数据验证工具类,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-05-05
  • java中的session对象如何获取

    java中的session对象如何获取

    这篇文章主要介绍了java中的session对象如何获取,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • 详解JAVA 原型模式

    详解JAVA 原型模式

    这篇文章主要介绍了JAVA 原型模式的的相关资料,文中讲解非常细致,实例帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-06-06
  • Java开发学习 Eclipse项目有红感叹号解决之道

    Java开发学习 Eclipse项目有红感叹号解决之道

    这篇文章主要为大家详细介绍了完美解决Eclipse项目有红感叹号问题的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-04-04
  • java中@JSONField和@JsonProperty注解的使用说明及对比

    java中@JSONField和@JsonProperty注解的使用说明及对比

    @JSONField与@JsonProperty隶属两个不同的包,前者是阿里系的fastjson包,后者是spring boot官方使用的jackson包,本文主要介绍了java中@JSONField和@JsonProperty注解的使用说明及对比,感兴趣的可以了解一下
    2023-11-11
  • Java之String.format()方法案例讲解

    Java之String.format()方法案例讲解

    这篇文章主要介绍了Java之String.format()方法案例讲解,本篇文章通过简要的案例,讲解了该项技术的了解与使用,以下就是详细内容,需要的朋友可以参考下
    2021-08-08
  • 详解Java 中的 AutoCloseable 接口

    详解Java 中的 AutoCloseable 接口

    本文对 try-with-resources 语法进行了较为深入的剖析,验证了其为一种语法糖,同时给出了其实际的实现方式的反编译结果,相信你在看完本文后,关于 AutoCloseable 的使用你会有新的收获。
    2020-11-11
  • Java中的HashMap弱引用之WeakHashMap详解

    Java中的HashMap弱引用之WeakHashMap详解

    这篇文章主要介绍了Java中的HashMap弱引用之WeakHashMap详解,当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题,需要的朋友可以参考下
    2023-09-09
  • 浅谈Java如何实现一个基于LRU时间复杂度为O(1)的缓存

    浅谈Java如何实现一个基于LRU时间复杂度为O(1)的缓存

    这篇文章主要介绍了浅谈Java如何实现一个基于LRU时间复杂度为O(1)的缓存,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-08-08
  • java+socket实现简易局域网聊天室

    java+socket实现简易局域网聊天室

    这篇文章主要为大家详细介绍了java+socket实现简易局域网聊天室,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05

最新评论