spring boot cli

The Spring Boot CLI (Command Line Interface)是一个命令行工具,可以快速搭建spring原型项目。可以使用Groovy脚本,脚本比较和java语法类似,非常简洁。

在用Groovy写程序时,没有spring配置,没有构建文件,没有import语句,没有部署应用,那这些代码是怎么运行起来的?

 

 

SpringBoot Cli :

  • CLI可以利用Spring Boot的自动配置和起步依赖。

  • CLI可以检测到正在使用的特定类,自动解析合适的依赖库来支持那些类。

  • CLI知道多数常用类都在哪些包里,如果用到了这些类,它会把那些包加入Groovy的默认包里。

  • 应用自动依赖解析和自动配置后,CLI可以检测到当前运行的是一个Web应用程序,并自动引入嵌入式Web容器(默认是Tomcat)供应用程序使用。

通过Spring Boot CLI运行阅读列表应用程序,表面看似平凡无奇,实则大有乾坤。CLI尝试用内嵌的Groovy编译器来编译Groovy代码。虽然你不知道,但实际上,未知类型(比如JdbcTemplateControllerRequestMapping,等等)最终会使代码编译失败。

但CLI不会放弃,它知道只要把Spring Boot JDBC起步依赖加入Classpath就能找到JdbcTemplate。它还知道把Spring Boot的Web起步依赖加入Classpath就能找到Spring MVC的相关类。因此,CLI会从Maven仓库(默认为Maven中心仓库)里获取那些依赖。

如果此时CLI重新编译,那还是会失败,因为缺少import语句。但CLI知道很多常用类的包。利用定制Groovy编译器默认包导入的功能之后,CLI把所有需要用到的包都加入了Groovy编译器的默认导入列表。

现在CLI可以尝试再一次编译了。假设没有其他CLI能力范围外的问题(比如,存在CLI不知道的语法或类型错误),代码就能完成编译。CLI将通过内置的启动方法(与基于Java的例子里的main()方法类似)运行应用程序。

此时,Spring Boot自动配置就能发挥作用了。它发现Classpath里存在Spring MVC(因为CLI解析了Web起步依赖),就自动配置了合适的Bean来支持Spring MVC,还有嵌入式Tomcat Bean供应用程序使用。它还发现Classpath里有JdbcTemplate,所以自动创建了JdbcTemplate Bean,注入了同样自动创建的DataSource Bean。

说起DataSource Bean,这只是Spring Boot自动配置创建的众多Bean中的一个。Spring Boot还自动配置了很多Bean来支持Spring MVC中的Thymeleaf模板。正是由于我们使用@Grab注解向Classpath里添加了H2和Thymeleaf,这才触发了针对嵌入式H2数据库和Thymeleaf的自动配置。

@Grab注解的作用是方便添加CLI无法自动解析的依赖。虽然它看上去很简单,但实际上这个小小的注解作用远比你想象得要大。让我们仔细看看这个注解,看看Spring Boot CLI是如何通过一个Artifact名称找到这么多常用依赖,看看整个依赖解析的过程是如何配置的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值