内容简介:Spring Cloud云函数可以实现无服务器功能,快速浏览Spring Cloud 2.0提供的一些改进,包括更快的启动和“全函数”的能力。而且,由于它是在Spring Boot之上构建的,因此不再需要servlet容器。Spring Cloud Function 2.0是基于Spring Boot 2.1和Spring Framework 5.1以上版本实现,不同于传统的Bean的定义,显著改善了在无服务器架构中的冷启动性能。下面是1.0版本的Spring的云函数功能应用,通过@Configurati
Spring Cloud云函数可以实现无服务器功能,快速浏览Spring Cloud 2.0提供的一些改进,包括更快的启动和“全函数”的能力。而且,由于它是在Spring Boot之上构建的,因此不再需要servlet容器。Spring Cloud Function 2.0是基于Spring Boot 2.1和Spring Framework 5.1以上版本实现,不同于传统的Bean的定义,显著改善了在无服务器架构中的冷启动性能。
下面是1.0版本的Spring的云函数功能应用,通过@Configuration和@Bean等声明式注解一起实现:
@SpringBootApplication <b>public</b> <b>class</b> DemoApplication { @Bean <b>public</b> Function<String, String> uppercase() { <b>return</b> value -> value.toUpperCase(); } <b>public</b> <b>static</b> <b>void</b> main(String args) { SpringApplication.run(DemoApplication.<b>class</b>, args); } }
可以在AWS Lambda中运行,还支持 Azure Functions 和 Apache OpenWhisk ,以及其他无服务器支持(例如 Oracle Fn 和 Riff )。
将spring-cloud-function-starter-web放在类路径中,就能访问端点:
$ curl localhost:8080 -d foo
返回的是大写FOO,说明上面代码中@Bean注解的函数转换功能起作用了。
1.0中Web适配器是使用Spring MVC实现的,这样你就需要启动一个Servlet容器才能运行Spring MVC。在Spring Cloud Function 2.0中,如果想使用Servlet容器,默认服务器是netty;还可以使用Webflux - 只需包含 spring-cloud-starter-function-webflux依赖项。
在2.0中,云函数功能实现代码有所区别:
@SpringBootConfiguration <b>public</b> <b>class</b> DemoApplication implements ApplicationContextInitializer<GenericApplicationContext> { <b>public</b> <b>static</b> <b>void</b> main(String args) { FunctionalSpringApplication.run(DemoApplication.<b>class</b>, args); } <b>public</b> Function<String, String> uppercase() { <b>return</b> value -> value.toUpperCase(); } @Override <b>public</b> <b>void</b> initialize(GenericApplicationContext context) { context.registerBean(<font>"demo"</font><font>, FunctionRegistration.<b>class</b>, () -> <b>new</b> FunctionRegistration<>(uppercase()) .type(FunctionType.from(String.<b>class</b>).to(String.<b>class</b>))); } } </font>
主要区别是:
- 主要实现类是ApplicationContextInitializer。
- @Bean方法已被转换为调用context.registerBean()
- @SpringBootApplication已被替换@SpringBootConfiguration,表示不会让Spring启动后实现自动配置,但是仍然标记这个类作为一个启动“入口点”。
- SpringApplication已经被替换为FunctionalSpringApplication,这是云功能新类(SpringApplication的一个子类)。
在Spring Cloud Function应用程序中注册的业务逻辑bean属于类型FunctionRegistration。这是一个包装器,包含有关输入和输出类型的函数和信息。在@Bean应用程序的形式中,信息可以反射性地导出,但在函数bean注册中,除非我们使用FunctionRegistration,否则其中一些信息会丢失。
还有一种方法是使应用自己直接实现Function (或Consumer 或Supplier):
@SpringBootConfiguration <b>public</b> <b>class</b> DemoApplication implements Function<String, String> { <b>public</b> <b>static</b> <b>void</b> main(String args) { FunctionalSpringApplication.run(DemoApplication.<b>class</b>, args); } @Override <b>public</b> String apply(String value) { <b>return</b> value.toUpperCase(); } }
Spring Boot在函数功能bean注册方面运行良好 - Spring Cloud Function在Spring Boot基础上构建和运行 - 但Spring Boot中的一些最有用的功能,即自动配置,都是以非函数性方式编码的。与整个Spring Boot相比,大多数Spring Cloud Function应用程序的范围相对较小,因此我们可以轻松地将其适应这些功能bean定义。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 谷歌云函数支持 Go 1.11,可携手实现无服务器化
- asp.net – 如何将服务器控件的实际客户端ID传递给javascript函数?
- Python 拓展之特殊函数(lambda 函数,map 函数,filter 函数,reduce 函数)
- Python 函数调用&定义函数&函数参数
- python基础教程:函数,函数,函数,重要的事说三遍
- C++函数中那些不可以被声明为虚函数的函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Coming of Age in Second Life
Tom Boellstorff / Princeton University Press / 2008-04-21 / USD 29.95
The gap between the virtual and the physical, and its effect on the ideas of personhood and relationships, is the most interesting aspect of Boellstorff's analysis... Boellstorff's portrayal of a virt......一起来看看 《Coming of Age in Second Life》 这本书的介绍吧!