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

使用spring boot在库中设置默认属性

岳锦
2023-03-14

我使用SpringBoot提供了许多不同的服务。我想为每个服务设置一些通用的配置,但允许服务拥有自己的属性,并在需要时覆盖它们。示例属性包括spring。显示_横幅、管理url等。

我该怎么做?如果我有以下资料:

  • 使用默认属性的src/main/Resources/application.yml服务公共
  • 服务1与src/main/资源/application.yml与自己的属性

我希望它们与优先的service1版本合并。相反,似乎只使用在类路径上找到的第一个。

(或者,使用@Configuration类会更好,但我不确定它们是否可以用于定义许多属性)

共有3个答案

周马鲁
2023-03-14

有几个选项可供您选择,所有选项都基于考虑属性源的顺序。

如果您的公共库负责创建SpringApplication,则可以使用setDefaultProperties。这些值可以被服务的application.properties覆盖。

或者,您的库可以在其一个@Configuration类上使用@PropertySource来配置,例如库。属性作为源。同样,这些属性可以在您的服务应用程序中重写。属性。

酆茂才
2023-03-14

我不知道你把它们合并是什么意思。

但我假设最后,您描述的是您具有特定于概要文件的配置的情况。因为,特定于某个服务的任何属性都可以使用Spring概要文件进行管理/注入,它始终优先于默认属性文件(请参阅文档)。

例如,您可以使用文件application-service1。使用属性spring运行应用程序时将自动使用的属性。简介。active=service1,可以在命令行和其他位置指定。如果不指定此属性,Spring Boot将退回到默认应用程序。属性文件。

当然,您可以在这两个文件中写入公共属性:

应用性质

service.url=http://localhost:8080/endpoint
service.user=admin
service.password=admin

application-service1.properties

service.url=http://api.service.com/endpoint
service.user=admin
service.password=aosdnoni3

希望这能有所帮助。

很抱歉格式不好,我对编辑器仍然不熟悉。

叶举
2023-03-14
public class MyApplicationListener implements ApplicationListener<ApplicationEvent> {
    @Override
    public void onApplicationEvent(ApplicationEvent event) {
        if (event instanceof ApplicationEnvironmentPreparedEvent) {
            ApplicationEnvironmentPreparedEvent envEvent = (ApplicationEnvironmentPreparedEvent) event;
            ConfigurableEnvironment env = envEvent.getEnvironment();
            Properties props = new Properties();
            //set props as desired
            env.getPropertySources()
                    .addFirst(new PropertiesPropertySource("customname", props));
    }
}

然后在src/main/resources/META-INF/spring中。工厂,添加行:org。springframework。上下文ApplicationListener=mypackage。MyApplicationListener

 类似资料:
  • 我正在使用带有Spring Boot(2.3.3版)的H2数据库和H2数据库的所有默认设置。 这是我申请的所有文件。 pom.xml

  • 问题内容: 我的下拉列表中有很多选项,例如: 我需要选择在标签中有价值 的是我自己的 选项,而不是按属性。 我该如何使用jQuery? 问题答案: 如果您想为此使用jQuery,请尝试以下代码。 更新: 在Vivek发表评论后,正确指出了steven spielberg想通过其Text值选择该选项。 下面是更新的代码。 您需要使用选择器通过包含的文本进行查找。 当获取和设置属性时,jQuery p

  • 问题内容: 我的实体中有一个布尔型属性。这是我的注释: 但是效果并不理想。这是我作为生成表的结果得到的SQL代码: 我究竟做错了什么? 因此,当我尝试将此类的实例保存到数据库时,出现异常: 如果我删除财产: 因此在这种情况下,我可以保存创建的对象。但是仍然 没有设置默认值, 并且我在数据库中此字段的值中得到NULL。 有什么想法吗?如果重要,我会使用MySQL Server 5.1。我将非常感谢您

  • 问题内容: 如何在hibernate字段中设置默认值? 问题答案: 如果要使用真实的数据库默认值,请使用: 注意,其中的字符串是数据库相关的。同样,如果选择此选项,则必须使用,因此不包括在插入时带有值的列。否则谈论默认是无关紧要的。 但是,如果您不希望数据库默认值,而只是Java代码中的默认值,只需像这样初始化变量-

  • 在我的quarkus应用程序中有两个命名的数据源,我们称之为A和B: Quarkus.datasource.a.db-kind=Oracle Quarkus.datasource.b.db-kind=Oracle 因此,每次应用程序启动时,我都会收到这样的通知: 警告:无法确定默认数据源的数据库类型

  • 问题内容: 有没有一种方法可以在共享首选项中设置默认值? 这是我的负载偏好代码 这是我的保存偏好代码 问题答案: 当您使用键和值设置首选项时,实际上是在提供该值。因此,这次不必使用默认值。请参见,在检索该值时,如果以前未设置该值,则可以定义一个默认值。 如果您得到strSavedMem1 =“ default”,那么肯定是默认情况,因为您没有在首选项中为MEM1设置任何其他值