Spring 在多租户环境中为占位符配置 application.properties
Spring configure application.properties for placeholder in multitenant environment
我有一个多租户环境,所以我需要在运行时从 application.properties 更改一些路径以使用特定租户的文件夹。
例如在我的应用程序属性中:
image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/
在我的 class 我使用
@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())
。
有没有一种简单的方法来更改占位符而无需操作字符串(使用替换)?
我认为 env.resolveRequiredPlaceholders 需要属性名称和占位符的可变参数,但它是不同的。
谢谢
这可能不是你想要的(因为我很难理解你的场景),但是把
image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/
在您的 application.properties
中,并使用
@Value("${image.avatars}")
private String DIRECTORY_USER_IMAGE;
在您的 bean/service 和 运行 应用程序中使用
这样的命令行参数
--tenant="FooBar"
这会给 DIRECTORY_USER_IMAGE
值 C:/Users/Public/Pictures/Sample Pictures/FooBar/Avatars/
,您可以根据需要更改 CLI 参数。但请注意 DIRECTORY_USER_IMAGE
不再是 static final
。
希望我能满足您的要求。
您可以使用 String.format()
.
只需在属性中使用%s
image.avatars=C:/Users/Public/Pictures/Sample Pictures/%s/Avatars/
以及代码中的
String.format(imageavatars, tenant)
我有一个多租户环境,所以我需要在运行时从 application.properties 更改一些路径以使用特定租户的文件夹。 例如在我的应用程序属性中:
image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/
在我的 class 我使用
@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())
。
有没有一种简单的方法来更改占位符而无需操作字符串(使用替换)?
我认为 env.resolveRequiredPlaceholders 需要属性名称和占位符的可变参数,但它是不同的。
谢谢
这可能不是你想要的(因为我很难理解你的场景),但是把
image.avatars=C:/Users/Public/Pictures/Sample Pictures/${tenant}/Avatars/
在您的 application.properties
中,并使用
@Value("${image.avatars}")
private String DIRECTORY_USER_IMAGE;
在您的 bean/service 和 运行 应用程序中使用
这样的命令行参数--tenant="FooBar"
这会给 DIRECTORY_USER_IMAGE
值 C:/Users/Public/Pictures/Sample Pictures/FooBar/Avatars/
,您可以根据需要更改 CLI 参数。但请注意 DIRECTORY_USER_IMAGE
不再是 static final
。
希望我能满足您的要求。
您可以使用 String.format()
.
只需在属性中使用%s
image.avatars=C:/Users/Public/Pictures/Sample Pictures/%s/Avatars/
以及代码中的
String.format(imageavatars, tenant)