当前位置: 首页 > 面试题库 >

如何以编程方式覆盖Spring Boot application.properties?

子车修平
2023-03-14
问题内容

我有从外部配置Web服务中获取的jdbc属性文件。在spring启动中,为了设置mysql属性,将这些属性添加到application.properties很容易:

spring.datasource.url=jdbc:mysql://localhost/mydb
spring.datasource.username=root
spring.datasource.password=root
spring.datasource.driver-class-name=com.mysql.jdbc.Driver

如何在我的应用中以编程方式覆盖这些内容?

Spring-batch道具也是如此:

database.driver=com.mysql.jdbc.Driver
database.url=jdbc:mysql://localhost/mydv
database.username=root
database.password=root

问题答案:

你可以在对ApplicationEnvironmentPrepared事件作出反应的生命周期侦听器中添加其他属性源。

类似于以下内容:

public class DatabasePropertiesListener implements ApplicationListener<ApplicationEnvironmentPreparedEvent> {
  public void onApplicationEvent(ApplicationEnvironmentPreparedEvent event) {
    ConfigurableEnvironment environment = event.getEnvironment();
    Properties props = new Properties();
    props.put("spring.datasource.url", "<my value>");
    environment.getPropertySources().addFirst(new PropertiesPropertySource("myProps", props));
  }
}

然后在src / main / resources / META-INF / spring.factories中注册该类:

org.springframework.context.ApplicationListener=my.package.DatabasePropertiesListener

这对我有用,但是,由于在应用程序启动阶段还处于初期,你在此时只能做些限制,因此你必须找到一种无需依赖其他弹簧即可获取所需值的方法



 类似资料:
  • 在我的应用程序中,我请求获得在Android SDK 23中访问SMS的权限(运行时权限),但问题是出现了对话框屏幕覆盖,并且未授予访问权限。我禁用了所有其他应用程序覆盖,但没有任何更改。我找到了这个链接,但没有帮助 问题是我如何通过编程修复它?

  • 我已经编写了以下常规的、每次都可用的函数来显示和关闭键盘: |==|以编程方式显示和关闭键盘: 但问题是,当编辑文本位于键盘下方时,活动不会向上移动。仅当用户开始键入时,它才会移动。 那么,一旦键盘出现,我如何使它向上移动呢? 我浏览了下面的所有链接,没有任何帮助: Android:如何防止软键盘将我的视图向上推? adjustPan不阻止键盘覆盖编辑文本 Android:软键盘覆盖编辑文本(ad

  • 问题内容: 是否可以覆盖已经在中配置的附加程序的“文件”属性,而无需创建新的附加程序?如果是的话-怎么样? 这是这种情况:我有两个apender,A1是ConsoleAppender,而A2是FileAppender。A2的“文件”指出了一个一般性error.log: 此附加程序仅记录错误级别的事件,或更糟糕的是 。 现在,我希望根据导致错误的类将这些错误写入不同的文件中,因为正在创建实例的类有多

  • 问题内容: 我正在开发页面,现在以我的CSS样式我有以下代码行 为我的页面。现在,我的某些页面不需要此行 我可能会在页面的内部CSS中覆盖它,这将导致原始行为被忽略? 问题答案: 使用不推荐,但在这种情况下,我想你应该- 在您的内部CSS中编写此代码-

  • 问题内容: 您是否知道JavaScript的“ JSON Beautifier”? 从 至 例 问题答案: 程序格式化解决方案: 许多现代浏览器(包括IE8)支持的方法可以输出美化的JSON字符串: 此方法还包含在json2.js中,用于支持较旧的浏览器。 手动格式化解决方案 如果您不需要以编程方式进行操作,请尝试JSON Lint 。它不仅会美化您的JSON,还将同时对其进行验证。

  • 问题内容: 我的问题很简单 如何以编程方式设置我的按钮layout_gravity? 我在互联网上找到了它,但它只是抛出了一个Nullpointer异常: 有什么办法吗? 问题答案: Java Kotlin 有关重力值以及如何设置重力,请检查“重力”。 基本上,您应该选择依赖于父项。可以是等等。