Spring configure application.properties для заполнителя в многопользовательской среде - PullRequest
0 голосов
/ 18 марта 2019

У меня мультитенантная среда, поэтому мне нужно изменить путь от 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()).
Есть ли простой способ изменить заполнитель без манипулирования строкой (с заменой)?
Я подумал, что env.resolveRequiredPlaceholder требовалось указать имя свойств и переменныезаполнитель, но это другое.Спасибо

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Вы можете использовать String.format().

Просто используйте %s в свойствах

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

И в коде

String.format(imageavatars, tenant)
0 голосов
/ 18 марта 2019

Это может быть не совсем то, что вы хотите (потому что я изо всех сил пытаюсь понять ваш сценарий), но как насчет помещения

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.

Надеюсь, я правильно понял ваши требования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...