声明
本人也在不断的学习和积累中,文章中有不足和误导的地方还请见谅,可以给我留言指正。希望和大家共同进步,共建和谐学习环境。
简介
The Spring Boot CLI (Command Line Interface)是一个命令行工具,可以快速搭建spring原型项目。可以使用Groovy脚本,脚本比较和java语法类似,非常简洁。
安装
1、下载
首先到官网 下载压缩包
然后解压到指定的位置
2、配置环境变量
这里我直接放在了path中
3、验证
在终端输入spring --version 来验证是否安装成功
运行Groovy脚本
我们在任意位置新建一个Groovy脚本helloworld.groovy 的文件,用编辑器打开,然后在helloworld.groovy 文件中编写脚本。
@Controller
class HelloController{
@RequestMapping("/hello")
@ResponseBody
String hello(){
return "Hello World!"
}
}
保存之后,我们在当前位置启动终端,然后输入spring run helloworld.groovy
出现下面的内容,说明已经启动完成了
注:第一次启动时,下载依赖比较慢,需要等一段时间
在浏览器中输入http://localhost:8080/hello 就能访问了
或者用终端访问
基本的Groovy脚本
Groovy和Spring与Spring Boot CLI结合在一起,可以在单个Groovy文件部署中快速编写功能强大,高性能的微服务。
对多脚本应用程序的支持通常需要额外的构建工具,如Maven或Gradle。
下面我们将介绍 Spring Boot CLI 的一些最常见的用例。
有关所有Spring支持的Groovy注释的列表,请查看官方文档。
1、 @Grab
@Grab注释和Groovy的Java式的进口条款允许依赖管理和注射。
实际上,大多数注释都抽象、简化并自动包含必要的import语句。这使我们可以花更多的时间来考虑架构以及我们想要部署的服务的基础逻辑。
我们来看看如何使用@Grab注释:
package org.test
@Grab("spring-boot-starter-actuator")
@RestController
class ExampleRestController{
//...
}
正如我们所看到的,spring-boot-starter-actuator是预先配置的,允许简洁的脚本部署,无需定制的应用程序或环境属性,XML或其他编程配置,但必要时可以指定这些内容。
@Grab参数的完整列表- 每个都指定要下载和导入的库 - 可在此处获得。
2、 @ Controller,@ RestController和@EnableWebMvc
为了进一步加快部署,我们可以使用Spring Boot CLI提供的“抓取提示”来自动推断要导入的正确依赖项。我们将介绍下面一些最常见的用例。
例如,我们可以使用熟悉的@Controller和@Service注释来快速构建标准MVC控制器和服务:
@RestController
class Example {
@Autowired
private MyService myService;
@GetMapping("/")
public String helloWorld() {
return myService.sayWorld();
}
}
@Service
class MyService {
public String sayWorld() {
return "World!";
}
}
Spring Boot CLI支持Spring Boot的所有默认配置。因此,我们的Groovy应用程序可以自动从其通常的默认位置访问静态资源。
3、 @ EnableWebSecurity
要将 Spring Boot Security 选项添加到我们的应用程序,我们可以使用@EnableWebSecurity注解,然后由 Spring Boot CLI 自动下载。
下面,我们将使用spring-boot-starter-security依赖项来抽象此过程的一部分,该依赖项利用了引擎下的@EnableWebSecurity注释:
package org.test
@Grab("spring-boot-starter-security")
@RestController
class SampleController {
@RequestMapping("/")
public def example() {
[message: "Hello World!"]
}
}
有关如何保护资源和处理安全性的更多详细信息,请查看官方文档。
4、@Test
要设置一个简单的JUnit测试,我们可以添加@Grab(‘junit’)或@Test注解:
package org.test
@Grab('junit')
class Test {
//...
}
这将允许我们轻松地执行JUnit测试。
5、 DataSource和JdbcTemplate
可以指定持久数据选项,包括DataSource或JdbcTemplate,而无需显式使用@Grab注释:
package org.test
@Grab('h2')
@Configuration
@EnableWebMvc
@ComponentScan('org.test')
class DataConfig {
@Bean
DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2).build();
}
}