当前位置: 首页 > 知识库问答 >
问题:

属性文件中的Spring和Constants类

徐星阑
2023-03-14
@Autowired
Constants constants;//in every class that needs constant
//...
constants.getArticleLimit()
Constants.ARTICLES_LIMIT //static var version
package org.simpletest.utils

import org.apache.log4j.Logger;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;

public class Constants {

    private static final Logger LOG = Logger.getLogger(Constants.class);

    public static final int ARTICLES_LIMIT;

    public static final String PROPERTIES_LOCATION = "constants.properties";

    static {
        Properties p = new Properties();

        //default values
        int articlesLimit = 10;

        Class<?> clazz = Constants.class.getClass(); 

        ClassLoader cl = clazz.getClassLoader();

        //try to load from properties file
        try(final InputStream is = cl.getResourceAsStream(PROPERTIES_LOCATION)){

            p.load(is);

            articlesLimit= Integer.parseInt(p.getProperty("articleslimit"));

        } catch (IOException e) {
            LOG.debug(String.format("Unable to load {0} properties file. Getting constants by default values.",PROPERTIES_LOCATION),e);
        }

        ARTICLES_LIMIT = articlesLimit;
    }
}

共有1个答案

左丘嘉言
2023-03-14

经过一些测试,这就是问题所在:

System.out.println(Constants.class.getClass());

这将打印java.lang.class,而ClassLoader可能没有加载这些文件。这是因为someclass.class的类是java.lang.class

移除getclass(),Classloader将不会为空。不需要clazz变量。这应该是您所需要做的一切:

ClassLoader cl = Constants.class.getClassLoader();
 类似资料:
  • 问题内容: 我在Java中使用常量文件和属性文件之间有些困惑。 如何决定何时使用 Constants.java 和何时使用 .properties 文件? 问题答案: 当 您不希望 用户/部署者/测试者/测试更改它们时, 请 在Java代码中使用固定的常量。 如果确实希望 这样 做, 请使用属性文件。 关键是要更改应用程序源代码中的固定常量,就需要编辑源代码,重新构建和重新部署。相比之下,更改属性

  • 问题内容: 我为该标题表示歉意。我找不到更好的方法来解释这种情况。 我使用URL http://www.exampledepot.com/egs/java.util/Props.html中所述的Property类加载属性文件。 我的问题是我可以在该属性文件中使用属性吗? 例: test.properties 其他语法有可能吗? 谢谢 问题答案: 以前从未见过。您当然 可以 制作自己的预处理器。只要

  • 问题内容: 我是Spring框架的新手。在我的Spring应用程序中,有一些细节,如下所述,这些细节需要在属性文件中维护。 在我的控制器中,有一个如下操作。 根据请求参数 提供者, 我需要获取相关的交易类型ID。例如,如果提供者为 TXT_CCO ,则事务类型id应为 70001 。 有人可以帮我实现这个目标吗 问题答案: 我会说你有2个选择 使用加载属性 使用和抽象。 使用 要简单地加载属性文件

  • 嗨,我正在使用Spring4.3.7、Java8和Spring boot,我的要求是我有两个属性文件一个在类路径内部,另一个在外部。我两个都装上了。使用 两个文件的输入值将几乎相同,例如文件命名约定或文件创建位置(除了db详细信息和很少其他令牌详细信息),所要做的是,如果外部属性文件存在,则从它读取属性值,或者从类路径中的一个读取属性值。通过Spring Boot中的任何注释,这是可能的吗?

  • 我有一个实用工具类,其中我有一个方法,它需要用户名和密码来连接其他URL。我需要将用户名保存在属性文件中,这样我就可以随时更改它。但当我在静态方法中使用它(作为实用程序类)时,问题是它显示为空(即它不能从属性文件中读取)。 但当我在其他控制器中输入这些值时,它们就会到达那里。所以我的问题是如何读取静态字段中的属性值

  • 问题内容: 给定以下格式( .properties 或 .ini ): 对于 Java ,提供了Properties类,该类提供了用于解析上述格式或与其进行交互的功能。 python 的 标准 库(2.x)中有类似的东西吗? 如果没有,我还有什么其他选择? 问题答案: 对于.ini文件,有一个ConfigParser模块,它提供与.ini文件兼容的格式。 无论如何,没有任何可用于解析完整的.pro