如何设置在Spring Boot应用程序启动时设置的全局属性

时间:2018-12-24 09:28:01

标签: java spring-boot

我想设置一些可由多个类访问的全局变量。这些全局变量的示例可能是一些键(字符串)之类的

我正在从数据库中获取这些变量,除非重新编译程序,否则变量可能不会改变

3 个答案:

答案 0 :(得分:0)

最简单的方法是为这些属性定义类型为@Component的{​​{1}}类。然后,使用从数据库中检索到的信息在应用程序的开头填充它。

然后,每当要使用这些属性时,都使用Map的DI机制注入这些属性。

答案 1 :(得分:0)

您没有提供太多详细信息,所以答案也很通用。

基本上有两种方法:

  1. 您可以使用Java Properties类。

    public static final Properties defaultProperties = new Properties();
    

    在程序开始时以defaultProperties从数据库初始化defaultProperties.put("name", value)

    通过defaultProperties.get("name")访问您的媒体资源。

  2. 编写您自己的配置类。

    class MyConfig
    {
      public final String SomeStringProperty;
      public final int SomeIntProperty;
      // Singleton
      public final static MyConfig instance = new MyConfig();
    
      private MyConfig()
      { // Init properties from database here.
      }
    }
    

    您可能需要某种依赖性注入模式来初始化MyConfig,例如建立数据库连接。

两种方法都相似。第二个提供了更多的类型安全性,并防止由于属性名称中的错字而意外访问不存在的属性。相反,可以通过添加新属性时无需更改配置代码的方式使第一个通用。当然,您仍然必须编写访问新属性的代码。

答案 2 :(得分:0)

您可以在application.properties文件中设置此属性。您可以在项目中的所有位置使用此属性。 例如:我正在将密钥用于受攻击的第三方。因此,我正在属性文件中使用密钥。