我有一个多租户环境,所以我需要在运行时更改 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)

潇潇雨雨
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_IMAGE
C:/Users/Public/Pictures/Sample Pictures/FooBar/Avatars/
DIRECTORY_USER_IMAGE
static final
我希望我答对了你的要求。
添加回答
举报
0/150
提交
取消