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

Spring使用错误的应用程序。亚马尔

单品
2023-03-14

我有一个SpringBoot应用程序和一组应用程序。不同配置文件的yaml文件。

application.yaml
application-dev.yaml
application-test.yaml

这些文件位于类路径中,没有额外的配置来切换它们,只需在intellij的配置“活动配置文件”部分更改配置文件。

我的一个Spring豆子依赖财产

它有一个如下所示的构造函数

@Service
public class MyBean {
   private static appUrl;

   public MyBean(@Value("${application.app-url}") String appUrl){
      MyBean.appUrl = Objects.requireNotNull(appUrl);
   }
}

如果appUrl在属性文件中不存在,这一点的全部意义就是使bean构造失败(从而导致应用程序无法启动)。

在application.yamlapplication-dev.yaml财产看起来像这样

application:
   app-url: http://someurl

我预计,若我从application-dev.yaml中删除应用程序url,然后用dev profile启动应用程序,它可能会失败。但我发现,当该配置文件的属性丢失应用程序中的属性时。yaml被取代了。

两个问题:

  1. 我怎么能防止这种从默认值application.yaml如果丢失的行为
  2. 是否有更好的方法来使MANDATORY属性,以确保应用程序在启动时失败,如果缺少属性

共有2个答案

尹善
2023-03-14

应用程序上设置属性。属性as

local.so68824465.prop1=value1

application-dev.propertiesas上可以设置为null

local.so68824465.prop1=#{null}

测试类

@Configuration
@EnableConfigurationProperties
public class ConfigProperties {

    @Value("${local.so68824465.prop1:zzzzzzz}")
    String prop1;
    
    @PostConstruct
    public void setup() {
        System.out.println("local.so68824465.prop1:" + (prop1 == null ? "is null" : prop1));
    }
}

案例1local。so68824465。prop1=dev值onapplication-dev.properties

SPRING_PROFILES_ACTIVE=dev ./gradlew bootRun

地方的so68824465。prop1:dev值

案例2local。so68824465。prop1=#{null}onapplication-dev.properties

SPRING_PROFILES_ACTIVE=dev ./gradlew bootRun

地方的so68824465。prop1:为空

案例#3没有特定的活动配置文件

./gradlew bootRun

地方的so68824465。建议1:价值1

案例#4两个文件上都没有特定的活动配置文件和缺少属性

./gradlew bootRun

地方的so68824465。建议1:zzzzz

测试日期:

id'org。springframework。启动“版本”2.5。1'

蔺宇
2023-03-14

如果我没有弄错,那是不可能的。Spring将始终返回到应用程序。yml如果存在。检查https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-配置以获取有关此的更多详细信息。

实现1和2的唯一方法是简单地删除应用程序。yml

 类似资料:
  • 我读过一些帖子,说亚马逊应用程序使用webviews相当多 (来源:https://www.quora.com/why-does-the-Amazon-app-use-webview-in-and-ios-application和https://www.teamblind.com/post/Amazon-app-webviews-cut4sn6c) 现在,我曾经在android中玩过webview

  • 我正在努力培养Alexa技能。我仍在试图让Alexa在有意向请求时说些什么,但我遇到了一个错误,我不知道该怎么办。当我通过Alexa服务模拟器运行示例话语时,我得到了错误: 无法调用远程终结点,或者它返回的响应无效。 如果我在lambda测试事件中运行相同的语句,我得到的错误是: "错误消息":"异常:引用错误:未定义输出" 我的javascript代码是 任何帮助将不胜感激,谢谢!

  • 我正在尝试使用注释运行集成测试: 。 我的问题是,应用程序通过使用spring概要文件“test”加载,我有两个配置文件:application。yaml应用测试。亚马尔 应用yaml包含: 而另一个文件不包含这些值。这些估值器由我使用的库使用,而不是直接由我的应用程序使用。 当我用启用的“测试”配置文件加载测试时,application.yaml的值不会被拾取。如果我将相同的值添加到applic

  • 求求你,帮帮我 使用spring web、jpa、mysql和flyway初学者创建一个基本的spring应用程序。.还没有代码;.application.properties配置到我的Mysql数据库;.在我的应用程序资源包中创建的文件夹db/migration 当启动应用程序而没有flyway依赖时,它的启动就可以了。当使用flyway依赖项启动应用程序时,我得到以下错误:

  • 我有这个问题: Spring MVC应用程序 我使用一些新代码解决了这个问题,创建了StudentDeleterePository.java和StudentDeleterePositoryImpl.java,并按照用户的建议添加了标记:

  • 我是谷歌应用引擎的初学者,也是Python网页开发的初学者。在制作了一个基于Python的小应用程序之后,我在过去的6天里一直在尝试将其上传到GAE上。下面的“app.yaml”文件给出了之后给出的错误。 Google App Engine在使用Python 2.7.3时出现以下错误 如果有人能帮助我,我将非常感激,尤其是在美国“感恩节”的这一天 “app.yaml”文件按照建议的间距进行了更新。