Spring SpEL для установки пути RequestMapping со списком - PullRequest
1 голос
/ 28 февраля 2020

Я хочу программно установить пути для службы отдыха. У меня есть метод бина, который имеет все пути.

public List<String> getSubscribeChannelsForRest() { .. }

Это служба отдыха

@RestController
public class RestMessageController {

    @PostMapping(
            path = { "#{somebean.getSubscribeChannelsForRest()[0]}",
                     "#{somebean.getSubscribeChannelsForRest()[1]}",
                     "#{somebean.getSubscribeChannelsForRest()[2]}"
            })
    public String processMessage(@RequestBody String messageBody, HttpServletRequest request) { .. }

Приведенный выше код работает, но я хочу избежать жесткого кодирования номеров массивов. Вот что я попробовал.

@PostMapping(
            path = { "#{somebean.getSubscribeChannelsForRest()}",

Это не работает, потому что пружинный метод RequestMappingHandlerMapping.resolveEmbeddedValuesInPatterns (String [] pattern) принимает вышеуказанный SpEL как массив из одного элемента. Я проверил журналы трассировки, и все элементы в данном списке были объединены.

...