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了...应该是一种配置文件的规定吧...

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

相关文章

  • 详解springboot配置多个redis连接

    详解springboot配置多个redis连接

    Spring Boot为Redis, MongoDB, Elasticsearch, Solr和Gemfire提供自动配置。本文详细介绍了springboot配置多个redis连接,有兴趣的可以了解一下。
    2017-04-04
  • 简单聊聊Java中验证码功能的实现

    简单聊聊Java中验证码功能的实现

    相信大家都经常接触到验证码的,毕竟平时上网也能遇到各种验证码,需要我们输入验证码进行验证我们是人类,本篇文章就从这几个方面出发说说验证码,废话不多说,下面开始正文
    2023-06-06
  • 链表的原理及java实现代码示例

    链表的原理及java实现代码示例

    这篇文章主要介绍了链表的原理及java实现代码示例,涉及单向链表的基本介绍,单向链表的Java实现代码分享等相关内容,具有一定参考价值,需要的朋友可以参考下。
    2017-11-11
  • 深入探究MyBatis插件机制灵活扩展及自定义增强框架能力

    深入探究MyBatis插件机制灵活扩展及自定义增强框架能力

    这篇文章主要介绍了深入探究MyBatis插件机制灵活扩展及自定义增强框架能力
    2024-01-01
  • JavaWeb验证码校验功能代码实例

    JavaWeb验证码校验功能代码实例

    这篇文章主要介绍了JavaWeb验证码校验功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Spring 实现自定义监听器案例

    Spring 实现自定义监听器案例

    这篇文章主要介绍了Spring 实现自定义监听器案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-01-01
  • 一文详解Java的饿汉和懒汉设计模式

    一文详解Java的饿汉和懒汉设计模式

    这篇文章主要为大家详细介绍了Java设计模式中的的饿汉模式和懒汉模式,文中的示例代码讲解详细,对我们学习Java有一定的帮助,需要的可以参考一下
    2022-12-12
  • Spring的异常处理@ExceptionHandler注解解析

    Spring的异常处理@ExceptionHandler注解解析

    这篇文章主要介绍了Spring的异常处理@ExceptionHandler注解解析,当一个Controller中有方法加了@ExceptionHandler之后,这个Controller其他方法中没有捕获的异常就会以参数的形式传入加了@ExceptionHandler注解的那个方法中,需要的朋友可以参考下
    2023-12-12
  • Spring Boot中如何使用Swagger详解

    Spring Boot中如何使用Swagger详解

    Swagger是一个规范和完整的框架,用于生成、描述、调用和可视化 RESTful风格的Web服务,这篇文章主要给大家介绍了关于Spring Boot中如何使用Swagger的相关资料,需要的朋友可以参考下
    2021-08-08
  • springboot vue项目后端列表接口分页模糊查询

    springboot vue项目后端列表接口分页模糊查询

    这篇文章主要为大家介绍了springboot vue项目后端列表接口分页模糊查询,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2022-05-05

最新评论