假设我们要写一个非常简单的Hello World Web应用,至少需要以下这些东西:
以上这么多点中,其实只有Controller才是我们关心的代码,其他的都是一些无聊的模板式的代码,多数Web应用都会用到。
看看Spring Boot怎么写:
@RestController
class HelloController {
@RequestMapping("/")
def hello() {
return "Hello World"
}
}
没有配置,没有web.xml,也没有构建脚本,甚至没有server,如果你安装了CLI,你就可以这么运行:
spring run HelloController.groovy
Spring Boot并非一种全新的框架,而是在Spring的基础之上,提供了开发Spring应用程序的更便捷的方法。
如果你要用JDBC访问关系型数据库,就需要配置一个JdbcTemplate,像这样:
@Bean
public JdbcTemplate jdbcTemplate(DataSource dataSource) {
return new JdbcTemplate(dataSource);
}
@Bean
public DataSource dataSource() {
return new EmbeddedDatabaseBuilder()
.setType(EmbeddedDatabaseType.H2)
.addScripts('schema.sql', 'data.sql')
.build();
}
为了访问个数据库,每次都要自己配置这样的Bean,太烦了,Spring Boot的自动配置机制非常棒,当它发现项目中有H2依赖包,它自动给你配置一个H2的DataSource,当它发现JdbcTemplate在类路径下,自动给你配置一个JdbcTemplate,并且会帮你自动注入,你就不用自己配置上面两个Bean了,直接拿来用就好了。
每次写代码,依赖是个很头疼的事情,我需要什么包?group和artifact是啥?该用哪个版本?会不会与别的包不兼容?
通过Spring Boot的starter包,借助于Maven或Gradle的传递性依赖特性,你想实现某些功能,直接引入对应功能的starter包就行了,相关的依赖都会引入进来,而且这些starter包的依赖版本都是经过严格测试的,保证版本兼容性不会出现问题。
比如你想写一个web应用,直接引入“web” starter(org.springframework .boot:spring-boot-starter-web),如果你需要security,直接引入“security” starter,所有相关的依赖都会引入进来。
上面1.1中的HelloController都没有import语句,那是因为CLI检测到RequestMapping和RestController,它知道它们来自哪些starter,CLI就会引入这些starter,并且自动配置会生效,所以就可以如此简单。
如果说前面的三个特性都是方便开发的,那么这个东西就是方便监控应用运行的了,通过Actuator,可以看到比如下面这些信息:
可以通过web路径或者shell命令查看(SSH)。
Spring Boot不是一个应用服务器,虽然通过Spring Boot你可以构建一个可执行的jar包(web应用),那是通过内置Servlet容器来实现的(Tomcat,Jetty,Undertow),而不是Spring Boot本身提供的。
Spring Boot不实现任何的Java标准,比如JPA或JMS,它只是通过自动配置实现这些标准的Bean来实现这些功能的。
Spring Boot不生成任何代码。
Spring Boot就是Spring,它只是帮你做了本来需要你手工去做的事情。
1. 手工安装
下载下面任意一个
下完解压,把bin路径加到环境变量PATH中即可(需要注销再登录),然后命令行运行:
spring --version
检查是否安装成功。对于Windows用户貌似就这一种方法。
2. SDKMAN安装(推荐)
安装SDKMAN(The Software Development Kit Manager)
curl -s get.sdkman.io | bash
source ~/.sdkman/bin/sdkman-init.sh
安装CLI
sdk install springboot
列出所有版本
sdk list springboot
安装特定版本
sdk install springboot 1.3.5.RELEASE
指定使用某版本
sdk use springboot 1.3.5.RELEASE
设置默认版本
sdk default springboot 1.3.5.RELEASE
3. OS X Homebrew安装
brew tap pivotal/tap
brew install springboot
Homebrew会把CLI安装到/usr/local/bin路径下面。
4. OS X MacPorts安装
sudo port install spring-boot-cli
MacPorts会把CLI安装到/opt/local/share/java/spring-boot-cli路径下面,并在/opt/local/bin下面创建符号链接。
Spring Initializer就是一个Web应用,你可以用它生成一个Spring Boot项目的骨架(Maven或Gradle),有几种使用方法:
通过IDEA
打开IDEA,选择File > New > Project,出来下图
点击Next,
这里做一些基本配置,点击Next,
这里选择你要的功能(依赖),其实就是starter依赖包,常用的比如Security、Web、JPA、MySQL等,点击Next,
最后填写项目名称和路径,点击Finish,一个项目骨架就生成并导入IDEA了。
通过Spring Boot CLI
可以用spring init命令来生成项目:
获得使用帮助
spring help init
获得所有参数、项目类型和依赖列表
spring init --list