У меня есть базовое Spring Cloud Function приложение с двумя объявленными функциями «нижний регистр» и «верхний регистр».Если я создаю приложение как обычное @ SpringBootApplication и аннотирую обе функции как @ Beans (функциональные компоненты), все работает отлично.Обе функции доступны через отдельные конечные точки HTTP, и я могу вызывать функции через:
- curl localhost: 8080 / uppercase -H "Content-Type: text / plain" -d«Мой вводимый текст»
- curl localhost: 8080 / строчные буквы -H «Тип содержимого: текст / обычный текст» -d «Мой вводимый текст»
Теперь я преобразовал основной класс приложения в «функциональную форму», чтобы улучшить время запуска приложения (как указано в официальном документе: http://cloud.spring.io/spring-cloud-function/multi/multi__functional_bean_definitions.html):
@SpringBootConfiguration
public class LambdaMicroserviceApplication implements ApplicationContextInitializer<GenericApplicationContext> {
public Function<String, String> uppercase() {
return String::toUpperCase;
}
public Function<String, String> lowercase() {
return String::toLowerCase;
}
public static void main(String[] args) {
FunctionalSpringApplication.run(LambdaMicroserviceApplication.class, args);
}
@Override
public void initialize(GenericApplicationContext context) {
context.registerBean("uppercase", FunctionRegistration.class,
() -> new FunctionRegistration<>(uppercase())
.type(FunctionType.from(String.class).to(String.class)));
context.registerBean("lowercase", FunctionRegistration.class,
() -> new FunctionRegistration<>(lowercase())
.type(FunctionType.from(String.class).to(String.class)));
}
}
Проблема:
Только одна одиночная конечная точка теперь отображается непосредственно в корневом пути:
curl localhost: 8080 / -H "Content-Type: text / plain" -d«Мой вводимый текст»
Вызывает функцию "верхнего регистра" внутри, независимо от порядка регистрации bean-компонентов в функции initialize .
Вопрос:
Есть ли способ снова вызвать обе функции через их выделенные конечные точки: localhost: 8080 / uppercase и localhost: 8080 / строчные ?