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

Spring以编程方式加载属性文件

仲孙献
2023-03-14

如果文件在类路径上,这就是我加载application.properties的方式。

@ComponentScan
@Configuration
@PropertySource("classpath:application.properties")
public class MyApplication {
    // Have some public methods
}

public class Application {

    public static void main(String[] args) {

        AnnotationConfigApplicationContext context = new AnnotationConfigApplicationContext(MyApplication.class);
        MyApplication app = context.getBean(MyApplication.class);

        // execute methods in app

    }
}

我们正在尝试部署应用程序,其中属性文件存储在外部的Google Cloud bucket(GCS)上。我可以从GCS加载属性文件并将其保存在内存中。如何将属性传递给应用程序上下文并重写从类路径加载的属性?

共有1个答案

单于俊智
2023-03-14

如果你有它在记忆中,那么它应该不是一个问题。去掉@PropertySource(“classpath:application.properties”)注释,手动注册PropertySourcesPlaceHolderConfigureerbean。

@Bean
public PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {
    PropertySourcesPlaceholderConfigurer properties = new PropertySourcesPlaceholderConfigurer();
    properties.setLocation([any implementation of Resource interface - use most applicable out of available or implement it by yourself]);
    return properties;
}
 类似资料:
  • 问题内容: 我们使用下面的代码从属性文件中注入具有属性的Spring bean。 有没有一种方法可以通过编程方式访问属性?我试图做一些没有依赖注入的代码。所以我只想要一些这样的代码: 问题答案: 怎么样?

  • 我的 Spring 启动应用程序中有两个数据源,因此我无法使用标准数据源。其中之一的定义如下: 上面yaml文件中定义的Hikari属性没有被考虑在内(可能是由于)。要求是使用默认的 Hikari 属性并覆盖上面定义的属性。请建议如何做到这一点。

  • 问题内容: 我想以编程方式从应用程序中加载Log4j2 XML配置文件。 试过这个: 还有这个: 但是什么都没有。 问题答案: 自己找到答案。有人可能会觉得有用。

  • 所以我需要为@Transactional注释设置timeout参数。这个属性将来自一个属性文件,我不能这样做,因为我遇到了“注释属性transactional.timeout的值必须是常量表达式”。像这样的东西

  • 我在尝试添加

  • 问题内容: 如何确保从hibernate.cfg.xml加载所有属性,然后以编程方式添加其他属性?我看到了以下代码片段,但它看起来像是全新的配置,而不是现有配置的补充。 问题答案: 您显示的代码段是您所需要的。只需使用您现有的配置,而不是创建一个新的配置即可。 如果不是您实例化配置(例如,spring),则需要扩展创建它的类。