我有一个基本的Spring云函数具有两个声明函数“小写”和“大写”的应用程序。如果我像平常一样创建应用程序@SpringBootApplication并将两个函数注释为@Beans(功能豆),一切正常。这两个函数都通过单独的 HTTP 端点公开,我可以通过以下方式调用这些函数:
- 卷曲本地主机:8080 /大写-H“内容类型:文本/纯文本”-d'我的
输入文本'
- 卷曲本地主机:8080 /小写-H“内容类型:
text/plain" -d '我的输入文本'
现在,我将应用程序的主类转换为“函数形式”,以缩短应用程序的启动时间(如官方文档中建议的那样:http://cloud.spring.io/spring-cloud-function/multi/multi__function_bean_definitions.html 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)));
}
}
Problem:
Only one单个端点现在直接在根路径处公开:
curl localhost:8080/ -H "Content-Type: text/plain" -d '我的输入文本'
它在内部调用“uppercase”函数,无论 Bean 中的注册顺序如何初始化功能。
问题:
有办法打电话吗both通过其专用端点再次发挥作用:本地主机:8080/大写 and 本地主机:8080/小写?