在Java中使用属性文件* AS *静态最终变量中的属性

编码棘轮

如何使用属性文件在应用程序中存储全局变量,又如何使用公共静态最终变量将它们注入应用程序中?

看了这个问题,我希望找到一种方法,可以将我的静态最终变量从属性文件注入到应用程序中。让我失望的是我,但最终找到了一种方法,让我也可以吃蛋糕。

我在下面发布此解决方案以添加到SO的纲要中...

编码棘轮

我的解决方案涉及到全局变量(显然是不好的的概念,因此,如果您不心虚,请继续阅读。

我相信,尽管我们都希望遵循函数式编程的热潮,并从函数中删除所有“拉出”依赖项的概念,但是有些真理需要绝对基础,因此,一些全局变量形式的真​​理来源在运行时应用程序中实际上是有帮助的。但我不想发火焰...

解决方案

  1. 从一个名为Globals的公共类开始(或类似这样的显而易见的东西)

  2. 要从属性文件中注入属性,您需要建立属性文件的基本名称(或位置),例如,"com.example.myapp.core.configuration"可以在您的核心模块中以物理url表示配置文件jar:file:C:/jars/myapp.ear/core.jar!/com/example/myapp/core/configuration.properties将此基本名称设置为静态最终变量:

    public static final String CORE_CONFIGURATION_BASENAME = "com.example.myapp.core.configuration";
    
  3. 然后将属性键定义为私有变量(用于封装),例如

    private static final String DOMAIN_PACKAGE_KEY = "myapp.domain.package.name";
    
  4. 然后将其自身定义为公共最终静态变量,如下所示:

    public static final String DOMAIN_PACKAGE; //we leave it uninitialized on purpose.
    
  5. 上面的代码在构建时会引发编译器错误,因此我们需要使用static块对其进行初始化。为此,我们必须首先使用我们定义的基本名称检索资源束:

    static {
        ResourceBundle bundle = PropertyResourceBundle(CORE_CONFIGURATION_BASENAME);
        ...
    }
    
  6. 然后我们使用定义的键来分配最终属性:”

    static {
        ResourceBundle bundle = PropertyResourceBundle(CORE_CONFIGURATION_BASENAME);
        DOMAIN_PACKAGE = bundle.getString(DOMAIN_PACKAGE_KEY);
    }
    

在那里,您拥有了它。这将在加载Globals类时初始化,因此,如果您使用值更改配置属性,并希望它们反映在您的应用程序中,则需要重新启动应用程序以强制类加载器重新加载该类。

现在总共:

package com.example.myapp.core.util;

import java.util.PropertyResourceBundle;
import java.util.ResourceBundle;

public class Globals {
    public static final String CORE_CONFIGURATION_BASENAME = "com.example.myapp.core.configuration";
    private static final String DOMAIN_PACKAGE_KEY = "myapp.domain.package.name";
    public static final String DOMAIN_PACKAGE; //we leave it uninitialized on purpose.

    static {
        ResourceBundle bundle = PropertyResourceBundle(CORE_CONFIGURATION_BASENAME);
        DOMAIN_PACKAGE = bundle.getString(DOMAIN_PACKAGE_KEY);
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在Java中使用属性文件* AS *静态最终变量中的属性

来自分类Dev

Spark程序结构:类中的广播变量与最终静态属性与外部静态属性

来自分类Dev

使用Spock在Java中模拟私有静态最终变量

来自分类Dev

Java中的静态最终变量在哪里使用?

来自分类Dev

使用引发异常的方法在静态块中初始化的最终静态变量

来自分类Dev

静态变量与静态属性

来自分类Dev

Java中的静态属性

来自分类Dev

最终的静态属性更改..任何想法或方法?

来自分类Dev

在Spring中使用属性文件

来自分类Dev

如何在sed命令中使用变量替换属性文件中的属性值

来自分类Dev

为什么我不能在psvm Java中创建静态最终变量?

来自分类Dev

在Windows中使用Java或C#添加自定义文件属性/属性

来自分类Dev

如何在JAVA中的ResourceBundle中使用匈牙利字符作为属性文件中的键?

来自分类Dev

如何在Spring上下文文件中的属性文件中使用环境变量

来自分类Dev

在Java中使用property.getProperty(“ sample。*”)从属性文件中获取所有属性值

来自分类Dev

无法在webdriver命令中使用属性文件的变量

来自分类Dev

Java Delphi中的最终变量

来自分类Dev

使用变量动态访问静态属性

来自分类Dev

Java中的静态类和最终类

来自分类Dev

在Jetty中使用属性文件的最佳方法

来自分类Dev

在Spring 4 MVC中使用属性文件

来自分类Dev

在ClientInterceptor中使用配置文件属性

来自分类Dev

Swift中的静态属性

来自分类Dev

Matlab中的静态属性

来自分类Dev

Delphi中的静态属性

来自分类Dev

在Chef的同一属性文件中的其他属性中使用属性值

来自分类Dev

静态块中的Java非最终静态映射操作

来自分类Dev

如何在Selenium WebDriver的属性文件中使用多行属性?

来自分类Dev

为什么Java不允许在构造函数中初始化静态最终变量(例如static final int d)?

Related 相关文章

  1. 1

    在Java中使用属性文件* AS *静态最终变量中的属性

  2. 2

    Spark程序结构:类中的广播变量与最终静态属性与外部静态属性

  3. 3

    使用Spock在Java中模拟私有静态最终变量

  4. 4

    Java中的静态最终变量在哪里使用?

  5. 5

    使用引发异常的方法在静态块中初始化的最终静态变量

  6. 6

    静态变量与静态属性

  7. 7

    Java中的静态属性

  8. 8

    最终的静态属性更改..任何想法或方法?

  9. 9

    在Spring中使用属性文件

  10. 10

    如何在sed命令中使用变量替换属性文件中的属性值

  11. 11

    为什么我不能在psvm Java中创建静态最终变量?

  12. 12

    在Windows中使用Java或C#添加自定义文件属性/属性

  13. 13

    如何在JAVA中的ResourceBundle中使用匈牙利字符作为属性文件中的键?

  14. 14

    如何在Spring上下文文件中的属性文件中使用环境变量

  15. 15

    在Java中使用property.getProperty(“ sample。*”)从属性文件中获取所有属性值

  16. 16

    无法在webdriver命令中使用属性文件的变量

  17. 17

    Java Delphi中的最终变量

  18. 18

    使用变量动态访问静态属性

  19. 19

    Java中的静态类和最终类

  20. 20

    在Jetty中使用属性文件的最佳方法

  21. 21

    在Spring 4 MVC中使用属性文件

  22. 22

    在ClientInterceptor中使用配置文件属性

  23. 23

    Swift中的静态属性

  24. 24

    Matlab中的静态属性

  25. 25

    Delphi中的静态属性

  26. 26

    在Chef的同一属性文件中的其他属性中使用属性值

  27. 27

    静态块中的Java非最终静态映射操作

  28. 28

    如何在Selenium WebDriver的属性文件中使用多行属性?

  29. 29

    为什么Java不允许在构造函数中初始化静态最终变量(例如static final int d)?

热门标签

归档