- 1 Spring Boot文档
- 1.1 关于这篇文档
- 1.2 获取帮助
- 1.3 第一步
- 1.4 使用Spring Boot
- 1.5 了解Spring Boot功能
- 1.6 转向生产
- 1.7 深入问题
- 2 入门
- 2.1 Spring Boot介绍
- 2.2 系统要求
- 2.3 安装Spring Boot
- 2.4 开发您的第一个Spring Boot应用程序
- 2.5 接下来要阅读的内容
- 3 使用Spring Boot
- 3.1 构建系统
- 3.1.1 依赖管理
- 3.2 结构化您的代码
- 3.3 配置类
- 3.4 自动配置
- 3.5 Spring Beans和依赖注入
- 3.6 使用@SpringBootApplication注解
- 3.7 运行您的应用程序
- 3.8 开发者工具
- 3.9 打包用于生产中的应用
- 3.10 接下来要阅读的内容
- 4 Spring Boot功能
- 4.1 SpringApplication
- 4.2 外部配置
- 4.3 Profiles
- 4.4 日志
- 4.5 国际化
- 4.6 JSON
- 4.7 开发Web应用程序
- 4.8 安全
- 4.9 使用SQL数据库
- 4.10 使用NoSQL技术
- 4.11 缓存
- 4.12 消息
- 4.13 使用RestTemplate调用REST服务
- 4.14 使用WebClient调用REST服务
- 4.15 校验
- 4.16 发送邮件
- 4.17 使用JTA的分布式事务
- 4.18 Hazelcast
- 4.19 Quartz Scheduler
- 4.20 任务执行和调度
- 4.21 Spring Integration
- 4.22 Spring Session
- 4.23 JMX的监控和管理
- 4.23 测试
- 4.25 WebSockets
- 4.26 Web Service
- 4.27 创建自己的自动配置
- 4.28 Kotlin支持
- 4.29 接下来要阅读的内容
- 5 Spring Boot Actuator: 生产就绪功能
- 5.1 启用生产就绪功能
- 5.2 Endpoints
- 5.3 通过HTTP进行监控和管理
- 5.4 JMX的监控和管理
- 5.5 Loggers
- 5.6 Metrics
- 5.7 审计
- 5.8 HTTP跟踪
- 5.9 进程监控
- 5.10 Cloud Foundry支持
- 5.11 接下来要阅读的内容
- 6 部署Spring Boot应用程序
- 6.1 部署到Cloud
- 6.2 安装Spring Boot应用程序
- 6.3 接下来要阅读的内容
- 7 Spring Boot CLI
- 7.1 安装CLI
- 7.2 使用CLI
- 7.3 使用Groovy Bean DSL开发应用程序
- 7.4 使用settings.xml配置CLI
- 7.5 接下来要阅读的内容
- 8 构建工具插件
- 8.1 Spring Boot Maven插件
- 8.2 Spring Boot Gradle插件
- 8.3 Spring Boot AntLib模块
- 8.4 支持其他构建系统
- 8.5 接下来要阅读的内容
- 9 ‘How-to’ 指南
- 9.1 Spring Boot应用
- 9.2 属性和配置
- 9.3 嵌入式Web服务器
- 9.4 Spring MVC
7.2 使用CLI
安装CLI后,可以通过键入spring并在命令行按Enter键来运行它。 如果在没有任何参数的情况下运行spring,将显示一个简单的帮助屏幕,如下所示:
$ spring
usage: spring [--help] [--version]
<command> [<args>]
Available commands are:
run [options] <files> [--] [args]
Run a spring groovy script
... more command help is shown here
您可以键入spring help以获取有关任何支持的命令的更多详细信息,如以下示例所示:
$ spring help run
spring run - Run a spring groovy script
usage: spring run [options] <files> [--] [args]
Option Description
------ -----------
--autoconfigure [Boolean] Add autoconfigure compiler
transformations (default: true)
--classpath, -cp Additional classpath entries
-e, --edit Open the file with the default system
editor
--no-guess-dependencies Do not attempt to guess dependencies
--no-guess-imports Do not attempt to guess imports
-q, --quiet Quiet logging
-v, --verbose Verbose logging of dependency
resolution
--watch Watch the specified file for changes
version命令提供了一种快速方法来检查您正在使用的Spring Boot版本,如下所示:
$ spring version
Spring CLI v2.1.2.RELEASE
7.2.1 使用CLI运行应用程序
您可以使用run命令编译和运行Groovy源代码。 Spring Boot CLI是完全独立的,因此您不需要任何外部Groovy安装。
以下示例显示了使用Groovy编写的“hello world”Web应用程序:
@RestController
class WebApplication {
@RequestMapping("/")
String home() {
"Hello World!"
}
}
要编译并运行该应用程序,请键入以下命令:
$ spring run hello.groovy
要将命令行参数传递给应用程序,请使用 -- 将命令与“spring”命令参数分开,如以下示例所示:
$ spring run hello.groovy -- --server.port=9000
要设置JVM命令行参数,可以使用JAVA_OPTS环境变量,如以下示例所示:
$ JAVA_OPTS=-Xmx1024m spring run hello.groovy
在Microsoft Windows上设置JAVA_OPTS时,请确保引用整个指令,例如设置“JAVA_OPTS = -Xms256m -Xmx2048m”。 这样做可确保将值正确传递给流程。
7.2.1.1 推导“grab”依赖关系
标准Groovy包含一个@Grab注释,它允许您声明对第三方库的依赖性。 这个有用的技术让Groovy以与Maven或Gradle相同的方式下载jar,但不需要你使用构建工具。
Spring Boot进一步扩展了这种技术,并尝试根据您的代码推断出“抓取”哪些库。 例如,由于先前显示的WebApplication代码使用@RestController注释,因此Spring Boot会抓取“Tomcat”和“Spring MVC”。
以下项目用作“grap提示”:
Items | Grabs |
---|---|
JdbcTemplate, NamedParameterJdbcTemplate, DataSource | JDBC Application. |
@EnableJms | JMS Application. |
@EnableCaching | Caching abstraction. |
@Test | JUnit. |
@EnableRabbit | RabbitMQ. |
extends Specification | Spock test. |
@EnableBatchProcessing | Spring Batch. |
@MessageEndpoint @EnableIntegration | Spring Integration. |
@Controller @RestController @EnableWebMvc | Spring MVC + Embedded Tomcat. |
@EnableWebSecurity | Spring Security. |
@EnableTransactionManagement | Spring Transaction Management. |
请参阅Spring Boot CLI源代码中的CompilerAutoConfiguration的子类,以准确了解自定义的应用方式。
7.2.1.2 推导“grab”坐标
Spring Boot通过允许您指定没有组或版本的依赖项来扩展Groovy的标准@Grab支持(例如,@Gran('freemarker'))。 这样做可以参考Spring Boot的默认依赖关系元数据来推断工件的组和版本。
默认元数据与您使用的CLI版本相关联。 只有当您移动到新版本的CLI时,它才会发生变化,让您可以控制依赖项版本何时发生变化。 可以在附录中找到显示默认元数据中包含的依赖关系及其版本的表。
7.2.1.3 默认导入语句
为了帮助减小Groovy代码的大小,自动包含几个import语句。 请注意前面的示例如何引用@ Component,@ RestController和@RequestMapping,而无需使用完全限定名称或import语句。
许多Spring注释在不使用import语句的情况下工作。 尝试运行应用程序以在添加导入之前查看失败的内容。
7.2.1.4 自动Main方法
与等效的Java应用程序不同,您不需要在Groovy脚本中包含public static void main(String [] args)方法。 将自动创建SpringApplication,并将编译后的代码作为源代码。
7.2.1.5 自定义依赖关系管理
默认情况下,CLI在解析@Grab依赖项时使用spring-boot-dependencies中声明的依赖关系管理。 可以使用@DependencyManagementBom批注配置覆盖缺省依赖关系管理的其他依赖关系管理。 注释的值应指定一个或多个Maven BOM的坐标(groupId:artifactId:version)。
例如,请考虑以下声明:
@DependencyManagementBom("com.example.custom-bom:1.0.0")
前面的声明在com/example/custom-versions/1.0.0/下的Maven存储库中选择了custom-bom-1.0.0.pom。
指定多个BOM时,它们将按您声明的顺序应用,如以下示例所示:
@DependencyManagementBom(["com.example.custom-bom:1.0.0",
"com.example.another-bom:1.0.0"])
前面的示例表明另一个bom中的依赖关系管理会覆盖custom-bom中的依赖关系管理。
您可以在任何可以使用@Grab的地方使用@DependencyManagementBom。 但是,为了确保依赖关系管理的一致排序,您可以在应用程序中最多使用一次@DependencyManagementBom。 Spring IO平台是一个有用的依赖关系管理源(它是Spring Boot的依赖关系管理的超集),您可以在其中包含以下行:
@DependencyManagementBom('io.spring.platform:platform-bom:1.1.2.RELEASE')
7.2.2 多资源文件的应用程序
您可以对所有接受文件输入的命令使用“shell globbing”。 这样做可以让您使用单个目录中的多个文件,如以下示例所示:
$ spring run *.groovy
7.2.3 打包您的应用程序
您可以使用jar命令将应用程序打包到一个自包含的可执行jar文件中,如以下示例所示:
$ spring jar my-app.jar *.groovy
生成的jar包含通过编译应用程序和所有应用程序的依赖项生成的类,以便可以使用java -jar运行它。 jar文件还包含应用程序类路径中的条目。 您可以使用--include和--exclude添加和删除jar的显式路径。 两者都以逗号分隔,并且都以“+”和“ - ”的形式接受前缀,以表示它们应该从默认值中删除。 默认包括如下:
public/**, resources/**, static/**, templates/**, META-INF/**, *
默认排除如下:
.*, repository/**, build/**, target/**, **/*.jar, **/*.groovy
在命令行上键入spring help jar以获取更多信息。
7.2.4 初始化一个新项目
init命令允许您在不离开shell的情况下使用start.spring.io创建新项目,如以下示例所示:
$ spring init --dependencies=web,data-jpa my-project
Using service at https://start.spring.io
Project extracted to '/Users/developer/example/my-project'
上面的示例使用基于Maven的项目创建一个my-project目录,该项目使用spring-boot-starter-web和spring-boot-starter-data-jpa。 您可以使用--list标志列出服务的功能,如以下示例所示:
$ spring init --list
=======================================
Capabilities of https://start.spring.io
=======================================
Available dependencies:
-----------------------
actuator - Actuator: Production ready features to help you monitor and manage your application
...
web - Web: Support for full-stack web development, including Tomcat and spring-webmvc
websocket - Websocket: Support for WebSocket development
ws - WS: Support for Spring Web Services
Available project types:
------------------------
gradle-build - Gradle Config [format:build, build:gradle]
gradle-project - Gradle Project [format:project, build:gradle]
maven-build - Maven POM [format:build, build:maven]
maven-project - Maven Project [format:project, build:maven] (default)
...
init命令支持许多选项。 有关详细信息,请参阅帮助输出。 例如,以下命令创建一个使用Java 8和war包装的Gradle项目:
$ spring init --build=gradle --java-version=1.8 --dependencies=websocket --packaging=war sample-app.zip
Using service at https://start.spring.io
Content saved to 'sample-app.zip'
7.2.5 使用嵌入式Shell
Spring Boot包含BASH和zsh shell的命令行完成脚本。 如果不使用这些shell中的任何一个(可能是Windows用户),则可以使用shell命令启动集成shell,如以下示例所示:
$ spring shell
Spring Boot (v2.1.2.RELEASE)
Hit TAB to complete. Type \'help' and hit RETURN for help, and \'exit' to quit.
从嵌入式shell内部,您可以直接运行其他命令:
$ version
Spring CLI v2.1.2.RELEASE
嵌入式shell支持ANSI颜色输出以及选项卡完成。 如果需要运行本机命令,可以使用! 字首。 要退出嵌入式shell,请按ctrl-c。
7.2.6 将扩展添加到CLI
您可以使用install命令向CLI添加扩展。 该命令采用格式组中的一组或多组工件坐标group:artifact:version,如以下示例所示:
$ spring install com.example:spring-boot-cli-extension:1.0.0.RELEASE
除了安装由您提供的坐标标识的工件外,还会安装所有工件的依赖项。
要卸载依赖项,请使用uninstall命令。 与install命令一样,它采用group:artifact:version格式的一组或多组工件坐标,如以下示例所示:
$ spring uninstall com.example:spring-boot-cli-extension:1.0.0.RELEASE
它会卸载由您提供的坐标及其依赖项标识的工件。
要卸载所有其他依赖项,可以使用--all选项,如以下示例所示:
$ spring uninstall --all
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论