springBoot 设置grpc的 channel springboot groovy_c++ hello world程序编写


本文介绍如何使用 Spring Boot CLI 快速创建一个 Web 应用,使用 Groovy 语言编写一个简单的 “Hello World”,使用 Gradle 构建并运行起来。

Groovy 是一种在 JVM 上运行的动态类型语言。 由于 Groovy 的语法非常接近 Java,因此 Java 开发人员很容易开始使用 Groovy。可以使用 Groovy 语言开发 Spring Boot 应用程序,而且使用 Groovy 可以大大提高开发效率。


springBoot 设置grpc的 channel springboot groovy_编写controller记录前台日志_02


Spring Boot 目前已经支持 Groovy 编程语言,你可以通过 Spring Initializer 在 http://start.spring.io 或者 IDE(STS、IDEA) 中创建基于 Groovy 语言开发的 Spring Boot 应用程序。

1. 介绍

内容简介: 一个简单的 Spring Boot Web 应用示例

语言框架: Groovy、Spring Boot、Spring MVC

难度级别: L1

阅读时间: 10 分钟

2. 工具准备

  • Java SDK : 8.0+
  • Spring Boot CLI : 2.1.2
  • Gradle : 4.10.2
  • IntelliJ IDEA : 2018.3
  • Curl / HTTPie

3. 实现步骤

3.1. 创建项目

首先,通过 Spring CLI 创建一个空白工程: Hello World 应用。

使用 Spring CLI 创建一个新工程

$ spring init --name hello-world --artifactId spring-boot-hello-world-groovy --groupId org.springdev.guides --package-name org.springdev.guides.helloworld --language groovy --build gradle --dependencies web --extract

3.2. 打开项目

打开 IDEA,点击菜单 File Open,选择项目所在目录 spring-boot-hello-world-groovy 下的 build.gradle,打开。

3.3. 项目结构

此时创建的新工程的目录结构如下:

项目目录结构

├── build.gradle├── gradle│ └── wrapper│ ├── gradle-wrapper.jar│ └── gradle-wrapper.properties├── gradlew├── gradlew.bat├── settings.gradle└── src ├── main │ ├── groovy │ │ └── org │ │ └── springdev │ │ └── guides │ │ └── helloworld │ │ └── HelloWorldApplication.groovy │ └── resources │ ├── application.properties │ ├── static │ └── templates └── test └── groovy └── org └── springdev └── guides └── helloworld └── HelloWorldApplicationTests.groovy

在工程根目录打开 build.gradle,其内容如下:

build.gradle

buildscript { ext { springBootVersion = '2.1.2.RELEASE'  } repositories { mavenCentral() } dependencies { classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}") }}apply plugin: 'groovy' apply plugin: 'org.springframework.boot'apply plugin: 'io.spring.dependency-management'group = 'org.springdev.guides'version = '0.0.1-SNAPSHOT'sourceCompatibility = '1.8'repositories { mavenCentral()}dependencies {  implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.codehaus.groovy:groovy' testImplementation 'org.springframework.boot:spring-boot-starter-test'}

代码说明如下:

Spring Boot 版本使用 2.1.2.RELEASE;使用 Gradle 插件: groovy、org.springframework.boot;项目的起步依赖:web、test 以及 groovy SDK;

打开应用的主程序文件: HelloWorldApplication.groovy,可以看到这个文件代码非常简单。

src/main/groovy/org/springdev/guides/helloworld/HelloWorldApplication.groovy

package org.springdev.guides.helloworldimport org.springframework.boot.SpringApplicationimport org.springframework.boot.autoconfigure.SpringBootApplication@SpringBootApplicationclass HelloWorldApplication { static void main(String[] args) { SpringApplication.run(HelloWorldApplication, args) }}

3.4. 编写代码

3.4.1. 编写 Controller

接下来我们开始编写 Controller。在 src/main/groovy/org/springdev/guides/helloworld/目录中新增一个 HelloController.groovy,内容如下:

src/main/groovy/org/springdev/guides/helloworld/HelloController.groovy

package org.springdev.guides.helloworldimport org.springframework.web.bind.annotation.GetMappingimport org.springframework.web.bind.annotation.RestController@RestController class HelloController { @GetMapping("/hello")  String hello() { "Hello, World!"  }}

代码说明如下:

Spring MVC 提供了 @RestController 注解,这是一个 REST 接口类;设置 Get 请求,请求地址为 /hello;响应成功,并返回内容为:Hello, World!。

3.5. 单元测试

3.5.1. 编写测试用例

src/test/groovy/org/springdev/guides/helloworld/HelloControllerTests.groovy

package org.springdev.guides.helloworld// import ... @RunWith(SpringRunner.class)@SpringBootTest // <1>@AutoConfigureMockMvcclass HelloControllerTests { @Autowired MockMvc mockMvc   @Test void hello() throws Exception { this.mockMvc.perform(get("/hello")) // <2> .andDo(print()) .andExpect(status().isOk()) // <3> .andExpect(content().string("Hello, World!")) // <4>  }}

代码说明如下:

  1. Spring Boot 提供了 @SpringBootTest 注解,该注解简化了 Spring Boot 应用的测试,提供了对应 spring-test 中 @ContextConfiguration 的功能,用于创建 ApplicationContext;
  2. 自动配置 MockMvc 实例,用于模拟执行请求 /hello;
  3. 验证响应状态码为 200,表示成功;
  4. 验证返回内容为:Hello, World!。

3.5.2. 执行单元测试

$ gradle test$ open build/reports/tests/test/index.html

报告显示测试执行成功,说明功能实现正确。

4. 构建运行

你可以先打包成可执行的 JAR:

$ gradle build

接着在控制台运行:

$ java -jar build/libs/spring-boot-hello-world-groovy-0.0.1-SNAPSHOT.jar

或者,直接执行命令 gradle bootRun:

$ gradle bootRun

控制台运行日志

> Task :bootRun . ____ _ __ _ _ / / ___'_ __ _ _(_)_ __ __ _    ( ( )___ | '_ | '_| | '_ / _` |     / ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |___, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v2.1.2.RELEASE)2019-01-14 20:21:37.228 INFO 72960 --- [ main] o.s.g.helloworld.HelloWorldApplication : Starting HelloWorldApplication on Michaels-MBP.lan with PID 72960 (/Users/rain/Development/springdev/guides/spring/spring-boot-hello-world-groovy/complete/build/classes/groovy/main started by rain in /Users/rain/Development/springdev/guides/spring/spring-boot-hello-world-groovy/complete)2019-01-14 20:21:37.231 INFO 72960 --- [ main] o.s.g.helloworld.HelloWorldApplication : No active profile set, falling back to default profiles: default2019-01-14 20:21:38.465 INFO 72960 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat initialized with port(s): 8080 (http)2019-01-14 20:21:38.509 INFO 72960 --- [ main] o.apache.catalina.core.StandardService : Starting service [Tomcat]2019-01-14 20:21:38.509 INFO 72960 --- [ main] org.apache.catalina.core.StandardEngine : Starting Servlet engine: [Apache Tomcat/9.0.14]2019-01-14 20:21:38.521 INFO 72960 --- [ main] o.a.catalina.core.AprLifecycleListener : The APR based Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: [/Users/rain/Library/Java/Extensions:/Library/Java/Extensions:/Network/Library/Java/Extensions:/System/Library/Java/Extensions:/usr/lib/java:.]2019-01-14 20:21:38.621 INFO 72960 --- [ main] o.a.c.c.C.[Tomcat].[localhost].[/] : Initializing Spring embedded WebApplicationContext2019-01-14 20:21:38.622 INFO 72960 --- [ main] o.s.web.context.ContextLoader : Root WebApplicationContext: initialization completed in 1330 ms2019-01-14 20:21:38.901 INFO 72960 --- [ main] o.s.s.concurrent.ThreadPoolTaskExecutor : Initializing ExecutorService 'applicationTaskExecutor'2019-01-14 20:21:39.126 INFO 72960 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''2019-01-14 20:21:39.129 INFO 72960 --- [ main] o.s.g.helloworld.HelloWorldApplication : Started HelloWorldApplication in 2.251 seconds (JVM running for 3.054)

5. 测试验证

打开浏览器,访问地址: http://localhost:8080/hello 会看到下图所示的界面:


springBoot 设置grpc的 channel springboot groovy_编写controller记录前台日志_03


或者,通过 curl 来验证:

$ curl -v http://localhost:8080/hello* Trying ::1...* TCP_NODELAY set* Connected to localhost (::1) port 8080 (#0)> GET /hello HTTP/1.1> Host: localhost:8080> User-Agent: curl/7.54.0> Accept: */*>< HTTP/1.1 200< Content-Type: text/plain;charset=UTF-8< Content-Length: 13< Date: Mon, 14 Jan 2019 12:21:50 GMT

或者,通过 HTTPie 验证:


$ http :8080/helloHTTP/1.1 200Content-Length: 13Content-Type: text/plain;charset=UTF-8Date: Mon, 14 Jan 2019 12:21:55 GMTHello, World!


6. 小结


恭喜,你已经学会了使用 Spring Boot CLI 创建一个 Web 应用,用 Groovy 语言编写一个 Hello World 程序,并且使用 Gradle 构建运行成功。


7. 相关文章


  • Spring Boot:编写一个 Hello World 应用(Java & Maven)
  • Spring Boot:编写一个 Hello World 应用(Kotlin & Gradle)