我有一个多租户环境,因此我需要在运行时更改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)
我了解了env.resolveRequiredPlaceholders
,但是由于它只有一个像env.resolveRequiredPlaceholders(TenantContext.getCurrentTenant())
这样的参数,因此我不知道如何使用它。
有没有一种简单的方法来更改占位符而无需操纵String(带有replace)?
我以为env.resolveRequiredPlaceholders需要属性的名称和占位符的变量,但这是不同的。
谢谢
答案 0 :(得分:1)
您可以使用String.format()
。
只需在属性中使用%s
image.avatars=C:/Users/Public/Pictures/Sample Pictures/%s/Avatars/
还有代码中的
String.format(imageavatars, tenant)
答案 1 :(得分:0)
这可能不完全是您想要的(因为我很难理解您的情况),但是放置
image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/
在您的application.properties
中并使用
@Value("${image.avatars}")
private String DIRECTORY_USER_IMAGE;
在您的bean /服务中,并使用类似命令行参数的应用程序运行
--tenant="FooBar"
这将为DIRECTORY_USER_IMAGE
赋予值C:/Users/Public/Pictures/Sample Pictures/FooBar/Avatars/
,您可以根据需要更改CLI参数。但是请注意,DIRECTORY_USER_IMAGE
不再是static final
。
希望我能满足您的要求。