Можно ли вложить # inside $ для доступа к переменной среды и переменной свойства в xml-файл spring?

Я определил переменную среды в VM, — Denvironment=dev. И я могу получить эту переменную с помощью SpEl, #{systemProperties[‘environment’]}. Между тем у меня есть переменная свойства, dev.anything=someValue, определенное в файле свойств. Я могу получить доступ к этому с помощью ${dev.что угодно.} Однако ${#{systemProperties [‘environment’]}.все, что угодно} просто дает мне Дэв.что-нибудь, вместо ожидаемого значения, someValue.

1 ответ

  1. Можно поместить заполнители свойств в SpEL, но не наоборот, или просто использовать заполнители свойств.

    ${${environment}.anything}} будет работать —

    @Value("${${bar}.foo}") 
    String foo;` 
    

    с -Dbar=x -Dx.foo=y

    результаты в Foo содержа y.

    Это тоже работает….

    @Value("#{systemProperties['${bar}' + '.foo']}")
    String bar;