为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶不菲 2022-08-17 10:09:26
我有一个多租户环境,所以我需要在运行时更改 application.properties 中的一些路径以使用特定租户的文件夹。例如,在我的应用程序属性中:image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/在我的课堂上,我使用@Autowiredprivate 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())
查看完整描述

2 回答

?
开满天机

TA贡献1786条经验 获得超13个赞

您可以使用 .String.format()

仅在属性中使用%s

image.avatars=C:/Users/Public/Pictures/Sample Pictures/%s/Avatars/

和在代码

String.format(imageavatars, tenant)


查看完整回答
反对 回复 2022-08-17
?
潇潇雨雨

TA贡献1833条经验 获得超4个赞

这可能不完全是你想要的(因为我很难理解你的场景),但是把

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

我希望我答对了你的要求。


查看完整回答
反对 回复 2022-08-17
  • 2 回答
  • 0 关注
  • 74 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号