内容简介:前言 Go 语言以简单著称,一个很明显的例子就是只需要很少的代码即可实现一个最小的 Web API 。Go-Spring 融合了 Go 简单和 Spring 自动配置的优点。本文通过几个实现最小 Web API 的示例展示 Go-Spring 的简单和...
前言
Go 语言以简单著称,一个很明显的例子就是只需要很少的代码即可实现一个最小的 Web API 。Go-Spring 融合了 Go 简单和 Spring 自动配置的优点。本文通过几个实现最小 Web API 的示例展示 Go-Spring 的简单和强大。
To Gopher
下面是使用 Go 标准库实现的 Hello World! 程序。代码真的很少!
package mainimport ("net/http")func main() {http.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) {w.Write([]byte("Hello World!"))})http.ListenAndServe(":8080", nil)}
Gin 是目前最火的 Web 框架之一,它实现的 Hello World! 程序如下。也很简单。
package mainimport ("github.com/gin-gonic/gin""github.com/gin-gonic/gin/ginS")func main() {ginS.GET("/", func(c *gin.Context) {c.String(200, "Hello World!")})ginS.Run()}
再来看看使用 Go-Spring 实现的 Hello World! 程序。同样很简单。
package mainimport ("github.com/go-spring/spring-core/gs""github.com/go-spring/spring-core/web"_ "github.com/go-spring/starter-gin")func main() {gs.GetMapping("/", func(ctx web.Context) {ctx.String("Hello World!")})gs.Run()}
但是,可以注意到使用 Go-Spring 实现的示例中有一个匿名导入的包,它的作用是告诉 Hello World! 程序使用 Gin 作为底层 Web Server 实现。如果我们把这一行改为如下代码,程序仍然可以正常执行,但是这时候程序使用 Echo 作为底层 Web Server 实现。
_ "github.com/go-spring/starter-echo"
虽然 Go-Spring 多了一行匿名包导入,但因此获得了比标准库更强大的能力。
To Javaer
Go-Spring 虽然提供了和 Go 标准库一样的编程模型,但本质上它是基于 IoC (依赖注入) 实现的,因此它具有标准库不具备的自动配置能力,而且与 Java Spring Boot 相比,Go-Spring 的编程效率也不差。
下面是使用 Java Spring Boot 实现的一个 Hello World! 程序,但是与上面的示例不同,为了展示 Java Spring 的依赖注入能力,它同时会打印 JAVA_HOME 环境变量的值。代码如下。
package com.example.demo11;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RestController;@RestControllerclass MyController {@Value("${JAVA_HOME}")String JavaHome;@GetMapping("/")public String hello() {return this.JavaHome + " - Hello World!";}}@SpringBootApplicationpublic class Demo11Application {public static void main(String[] args) {SpringApplication.run(Demo11Application.class, args);}}
下面是使用 Go-Spring 的依赖注入能力实现的能同时打印 GOPATH 环境变量和 Hello World! 的程序。代码如下。
package mainimport ("github.com/go-spring/spring-core/gs""github.com/go-spring/spring-core/web"_ "github.com/go-spring/starter-gin")func init() {gs.Object(new(MyController)).Init(func(c *MyController) {gs.GetMapping("/", c.Hello)})}type MyController struct {GoPath string `value:"${GOPATH}"`}func (c *MyController) Hello(ctx web.Context) {ctx.String(c.GoPath + " - Hello World!")}func main() {gs.Run()}
比较上面两个示例,可以看出 Go-Spring 真正实现了 Go 和 Java Spring 的融合,在保持 Go (语法) 简单的同时具备 Java Spring 的强大配置能力。
通过本文的介绍,你有没有对 Go-Spring 动心呢?赶紧动手试试吧!
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- IJPay 0.8 版本发布,兼容低版本 JDK
- fastjson 1.2.55 版本发布,Bug 修复版本
- Apache Ignite 2.9.1 版本发布,小版本更新
- Swoole v4.6.1 版本发布,Bug 修复版本
- Swoole v4.6.2 版本发布,Bug 修复版本
- Swoole v4.6.4 版本发布,Bug 修复版本
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Python深度学习
[美] 弗朗索瓦•肖莱 / 张亮 / 人民邮电出版社 / 2018-8 / 119.00元
本书由Keras之父、现任Google人工智能研究员的弗朗索瓦•肖莱(François Chollet)执笔,详尽介绍了用Python和Keras进行深度学习的探索实践,涉及计算机视觉、自然语言处理、生成式模型等应用。书中包含30多个代码示例,步骤讲解详细透彻。由于本书立足于人工智能的可达性和大众化,读者无须具备机器学习相关背景知识即可展开阅读。在学习完本书后,读者将具备搭建自己的深度学习环境、建......一起来看看 《Python深度学习》 这本书的介绍吧!
