SpringBoot(2.1.9.RELEASE)快速入门
Spring Boot 是 Spring 开源组织下的子项目,是 Spring 组件一站式解决方案,主要是简化了使用 Spring 的难度,简省了繁重的配置,提供了各种启动器,开发者能快速上手。
解决:
-
"Spring全家桶" 时代。
-
SpringBoot --> J2EE一站式解决方案。
-
SpringCloud --> 分布式整体解决方案。
特性:
-
快速创建独立运行的 Spring 应用程序。
-
直接嵌入式的 Tomcat、Jetty 或 Undertow,无需部署WAR包文件。
-
提供各种 “starter(启动器)” 依赖关系,以简化构建配置。
-
大量的自动配置,简化开发,也支持修改默认值。
-
提供可用于生产环境的特性,例如度量指标、健康检查和外部化配置。
-
完全不需要代码生成,也不需要XML配置。
二、准备工作
学习前必须掌握以下内容:
-
Spring 框架的使用经验
-
熟练使用 Maven/Gradle 进行项目构建
-
熟练使用 IDEA 和 Eclipse
环境约束:
-
Jdk1.8
-
Gradle 4.10
-
IntelliJ IDEA 2020
-
Spring Boot 2.1.9.RELEASE
系统要求:虽然你可以在Java 6或7上使用 Spring Boot,但是建议用Java 8。
三、使用Spring Initializr初始化SpringBoot项目
万事开头难,你需要设置一个目录结构存放各种项目内容,创建构建文件,并在其中加入各种依赖。如果你倾向于传统 Java 项目结构,可以去看看 Spring Initializr。 Spring Initializr 从本质上来说就是一个Web应用程序,它能为你生成 Spring Boot 项目结构。虽然不能生成应用程序代码,但它能为你提供一个基本的项目结构,以及一个用于构建代码的Maven或Gradle构建说明文件。你只需要写应用程序的代码就好了。
最常用的 Spring Initializr 有以下两种用法:
-
通过Web界面使用。
-
通过IntelliJ IDEA使用。
1.使用Spring Initializr的Web界面
要使用 Spring Initializr,最直接的办法就是用浏览器打开 https://start.spring.io 或 https://start.aliyun.com,你应该能看到类似下图的表单。
Alibaba 构建项目官方版:
Spring 构建项目官方版:
表单的头三个问题是,你想用 Maven 还是 Gradle 来构建项目,选择什么样的语言开发,以及使用 Spring Boot 的哪个版本。程序默认生成 Maven 项目,我使用的是 Gradle 方式构建,并使用 Spring Boot 的最新版本,但你也可以自由选择其他选项。
表单左侧 Project Metadata 要你指定项目的一些基本信息。最起码你要提供项目的 Group 和 Artifact,分别是项目组(公司域名)Name 与 Artifact 是项目名称两者意思相同,Description 是项目描述信息可选,Package name 是包名,这些信息是用来生成 Maven 的 pom.xml 文件或者 Gradle 的 build.gradle 文件的。
填完表单,选好依赖,点击 “Generate Ctrl” 按钮,Spring Initializr 就会为你生成一个项目。浏览器将会以ZIP文件的形式(文件名取决于 Artifact 字段的内容)把这个项目下载下来。根据你的选择,ZIP文件的内容也会略有不同。不管怎样,ZIP文件都会包含一个极其基础的项目,让你能着手使用 Spring Boot 开发应用程序。
举例来说,假设你在 Spring Initializr 里指定了如下信息。
-
Artifact:springboot-learning
-
包名:org.wesson.springboot.study
-
类型:Gradle项目
-
依赖:Spring Web
点击“Generate Ctrl”,就能获得一个名为springboot-learning.zip的ZIP文件。解压后的项目结构如下图:
如你所见,项目里基本没有代码,除了几个空目录外,还包含了如下几样东西。
-
Application.java:一个带有main()方法的类,用于引导启动应用程序。
-
ApplicationTests.java:一个空的JUnit测试类,它加载了一个使用Spring Boot自动配置功能的Spring应用程序上下文。
-
build.gradle:Gradle 构建说明文件。如果选择 Maven 项目,这就会换成 pom.xml。
-
application.properties:一个空的properties文件,你可以根据需要添加配置属性。
在 Spring Boot 应用程序中,就连空目录都有自己的意义。static 目录放置的是 Web 应用程序的静态内容(JavaScript、样式表、图片,等等)。还有用于呈现模型数据的模板会放在 templates 目录里。
2.在IntelliJ IDEA里创建SpringBoot项目
要在 IntelliJ IDEA 里创建新的 Spring Boot 应用程序,在 File 菜单里选择 New > Project。你会看到几屏内容,问的问题和 Initializr 的 Web 应用程序类似。
首先显示的是 Spring Boot 初始化向导的第一屏内容中,在左侧项目选择里选中 Spring Initializr,随后会提示你选择一个 Project SDK(选择 Java Jdk 版本),同时选择 Initializr Web 服务的位置,选择 Default 默认即可,直接点击 Next 按钮:
接着显示的是 Spring Boot 初始化向导的第二屏内容,要求你提供项目的一些基本信息,比如项目名称、Group 和 Artifact、Java 版本、Package 包名,以及你是想用 Maven 还是 Gradle 来构建项目。描述好项目信息之后,点击 Next 按钮:
最后一屏问你项目叫什么名字,还有要在哪里创建项目。一切准备就绪之后,点击 Finish 按钮,就能在 IDEA 里得到一个空的 Spring Boot 项目了:
四、永远的Hello World
1.新建Module
上面已经创建过父级项目工程了,了解过 Spring Boot 工程目录后,父级项目中的 src 目录就可以删除了:
在以后的学习中,我们使用 IntelliJ IDEA New 一个 Module 子项目名叫 springboot-hello 进行编写代码:
2.build.gradle项目依赖
引入spring-boot-starter-web依赖:使用Spring MVC构建Web(包括RESTful)应用程序的入门程序。使用Tomcat作为默认的嵌入式容器
plugins { id 'org.springframework.boot' version '2.1.9.RELEASE' id 'io.spring.dependency-management' version '1.0.9.RELEASE' id 'java' } group = 'org.wesson.springboot.hello' version = '1.0.0' sourceCompatibility = '1.8' repositories { maven { // 指定阿里云远程仓库的位置,能够加快导入第三方jar包速度 url = "http://maven.aliyun.com/nexus/content/groups/public/" } mavenCentral() } dependencies { compile group: 'org.springframework.boot', name: 'spring-boot-starter-web' testCompile group: 'org.springframework.boot', name: 'spring-boot-starter-test' }
3.启动类SpringbootHelloApplication.java
package org.wesson.springboot.hello; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; /** * @SpringBootApplication = @Configuration + @EnableAutoConfiguration + @ComponentScan */ @SpringBootApplication public class SpringbootHelloApplication { public static void main(String[] args) { // 负责启动Spring引导应用程序 SpringApplication.run(SpringbootHelloApplication.class, args); } }
我们一起来复习一下之前 SSM 框架的三个注解吧,看看大家还能想起来多少:
-
@Configuration:用于定义配置类,可替换xml配置文件,被注解的类内部包含有一个或多个被@Bean注解的方法。
-
@EnableAutoConfiguration:开启Spring Boot自动配置的机制。
-
@ComponentScan:开启@Component对应用程序指定包下注解(@Repository、@Service、@Controller)进行Spring组件扫描。
package org.wesson.springboot.hello.controller; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; /** * @RestController = @Controller + @ResponseBody */ @RestController @RequestMapping("/demo") public class HelloController { /** * @GetMapping = @RequestMapping(method = RequestMethod.GET),method:指定请求的方法类型(GET,POST,PUT,DELETE)等。 */ @GetMapping("/hello") public String hello() { return "Hello World!"; } }
5.测试
运行一个名叫 SpringbootHelloApplication.java 的启动类,可以一起来看以下内嵌式的 Tomcat 运行效果,控制台默认显示8080端口号:
浏览器访问 http://localhost:8080/demo/hello 请求,输出结果如下:
五、什么是SpringBoot启动器
启动器(Starters)是一套非常方便的依赖管理工具,它能够让你在自己的应用程序中包含它们。你可以获得一个一站式的 https://mvnrepository.com Maven 仓库网址,里面有你需要的所有 Spring 和相关技术。只要是创建 Spring Boot 项目,你所需要的第三方 Jar 包都能够从该官网上找到,比如下面搜索一个 spring web 依赖:
由于现在学习的是 Spring Boot,就选择 Spring Boot Web Starter 启动器,点进去之后你就能看到发布的所有版本号了:
我使用的 Spring Boot 版本号是 2.1.9.RELEASE,个人觉得还是挺稳定的。黄色圈下面的菜单你就能够看到 Maven 与 Gradle 的依赖资源了:
所有启动器都遵循类似的命名方式:spring-boot-starter-*
,其中*
是特定类型的应用程序(也可以说是你所需要引入的某某技术)。这个命名结构是为了在你需要查找启动器时提供帮助。更多详细的 Spring Boot 常用启动器请参考官方文档:Starters
Java 学习到这个阶段,自己还不会创建项目和查找依赖的话就实在有点说不过去了!!!