猿问

弹簧配置应用程序.多租户环境中占位符的属性

我有一个多租户环境,所以我需要在运行时更改 application.properties 中的一些路径以使用特定租户的文件夹。例如,在我的应用程序属性中:


image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/

在我的课堂上,我使用


@Autowired

private Environment env;

private static final String DIRECTORY_USER_IMAGE = "image.avatars";

.....Method

    env.getRequiredProperty(DIRECTORY_USER_IMAGE)

我读了关于,但我不明白它如何在我的情况下使用,因为它只有一个这样的参数。

有没有一种简单的方法来更改占位符而不操作String(带替换)?

我认为 env.resolveRequiredPlaceholders 需要属性的名称和占位符的 varargs,但它是不同的。谢谢env.resolveRequiredPlaceholdersenv.resolveRequiredPlaceholders(TenantContext.getCurrentTenant())


蝴蝶不菲
浏览 75回答 2
2回答

开满天机

您可以使用 .String.format()仅在属性中使用%simage.avatars=C:/Users/Public/Pictures/Sample Pictures/%s/Avatars/和在代码String.format(imageavatars, tenant)

潇潇雨雨

这可能不完全是你想要的(因为我很难理解你的场景),但是把image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/在您的 中,并使用application.properties@Value("${image.avatars}") private String DIRECTORY_USER_IMAGE;在您的Bean/服务中,并使用命令行参数运行应用程序,例如--tenant="FooBar"这将给出值,您可以根据需要更改 CLI 参数。但请注意,这不再是了。DIRECTORY_USER_IMAGEC:/Users/Public/Pictures/Sample Pictures/FooBar/Avatars/DIRECTORY_USER_IMAGEstatic final我希望我答对了你的要求。
随时随地看视频慕课网APP

相关分类

Java
我要回答