内容简介: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++函数中那些不可以被声明为虚函数的函数
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Java语言程序设计(基础篇 原书第10版)
[美]粱勇(Y.Daniel Liang) / 戴开宇 / 机械工业出版社 / 2015-7 / 85.00元
《Java语言程序设计(基础篇 原书第10版)》是Java语言的经典教材,中文版分为基础篇和进阶篇,主要介绍程序设计基础、面向对象编程、GUI程序设计、数据结构和算法、高级Java程序设计等内容。本书以示例讲解解决问题的技巧,提供大量的程序清单,每章配有大量复习题和编程练习题,帮助读者掌握编程技术,并应用所学技术解决实际应用开发中遇到的问题。您手中的这本是其中的基础篇,主要介绍了基本程序设计、语法......一起来看看 《Java语言程序设计(基础篇 原书第10版)》 这本书的介绍吧!
RGB转16进制工具
RGB HEX 互转工具
SHA 加密
SHA 加密工具