如何将库中的值连接为默认值并在应用程序明确定义属性后覆盖它

How to wire value in library as default and overwrite it once application defines properties explicitly

我试图创建一个电子邮件实用程序,它需要一些服务器属性。 所以我想创建一个包并让应用程序使用它。如果应用程序为电子邮件实用程序指定属性,它应该可以正常工作。如果应用程序不这样做,它应该也可以通过使用电子邮件实用程序中的默认属性来正常工作。这意味着应用程序不需要为该实用程序指定电子邮件属性。

由于应用程序是 spring mvc 或 spring 系列,是否可以使用 spring 注释 @Value 来做到这一点?或者它的最佳实践是什么?

示例: Application:A , EmailUtils:E, Properties:P

  1. A 在 A 中没有给定 P 的情况下使用 E。在 E 中使用了 P。
  2. A 在 A 中使用给定 P 的 E。使用 A 中的 P。

ps:我不想在 util 中硬编码属性然后覆盖它,甚至将它们传递给构造函数。

在EmailUtils中的value注解中默认即可

   @Value("${some.key:my default value}")
   private String stringWithDefaultValue;