SpringBoot快速入门
1.首先来了解一下一些关于SpringBoot的特性
什么是Spring Boot:
官方介绍:Spring Boot 可以构建一切。Spring Boot 设计之初就是为了用最少的配置,以最快的速度来启动和运行 Spring 项目。Spring Boot 使用特定的配置来构建生产就绪型的项目
Spring Boot 特性
- 使用 Spring 项目引导页面可以在几秒构建一个项目;
- 方便对外输出各种形式的服务,如 REST API、WebSocket、Web、Streaming、Tasks;
- 非常简洁的安全策略集成;
- 支持关系数据库和非关系数据库;
- 支持运行期内嵌容器,如 Tomcat、Jetty;
- 强大的开发包,支持热启动;
- 自动管理依赖;
- 自带应用监控;
- 支持各种 IDE,如 IntelliJ IDEA、NetBeans。
2.创建SpringBoot项目
我们有二种方式来构建Spring Boot项目基础框架
第一种是使用Spring官方提供的构建页面
- 访问http://statrt.spring.io/ 网址
- 选择构建工具 Maven Project,编程语言选择 Java,Spring Boot 版本2.0.5以及一些工程基本信息
- 单击Generate Project下载解压压缩包
- 解压后,使用IDEA导入项目
第二种使用IDEA构建
- 选择File|New|project…命令,弹出新建项目的对话框
- 选择Spring Initialize,Next 也会出现上述类似的配置页面,IDEA帮我们做了集成
- 填写相关内容后,单击 Next 按钮,选择依赖的包再单击 Next 按钮,最后确定信息无误单击 Finish 按钮
对上面的配置做如下解释- 第一个选择框选择创建以 Maven 构建项目,还是以 Gradle 构建项目,这是两种不同的构建方式,其中 Gradle 配置内容更简洁一些,并且包含了 maven 的使用,但我们日常使用 maven 居多。
- 第二个选择框选择编程语言,现在支持 Java、Kotlin 和 Groovy。
- 第三个选择框选择 Spring Boot 版本,可以看出 Spring Boot 2.0 的最新版本是 2.0.5。
配置信息- Group,一般填写公司域名,比如百度公司就会填:com.baidu,演示使用 com.neo。
- Artifact,可以理解为项目的名称了,可以根据实际情况来填,本次演示填 hello。
- Dependencies,在这块添加我们项目所依赖的 Spring Boot 组件,可以多选,本次选择 Web、Devtools 两个模块。
Spring Boot的基础构建共三个文件,具体如下- src/main/java:程序开发以及主程序入口;
- src/main/resources:配置文件;
- src/test/java:测试程序。
Spring Boot 建议的目录结构如下
myproject
+-src
+- main
+- java
+- com.example.myproject
+- comm
+- model
+- repository
+- service
+- web
+- Application.java
+- resources
+- static
+- templates
+- application.properties
+- test
+-pom.xml
com.example.myproject 目录下:
- Application.java,建议放到根目录下面,是项目的启动类,Spring Boot 项目只能有一个 main() 方法;
- comm 目录建议放置公共的类,如全局的配置文件、工具类等;
- model 目录主要用于实体(Entity)与数据访问层(Repository);
- repository 层主要是数据库访问层代码;
- service 层主要是业务类代码;
- web 层负责页面访问控制。
resources 目录下:- static 目录存放 web 访问的静态资源,如 js、css、图片等;
- templates 目录存放页面模板;
- application.properties 存放项目的配置信息。
test 目录存放单元测试的代码;pom.xml 用于配置项目依赖包,以及其他配置。
采用默认配置可以省去很多设置,也可以根据公司的规范进行修改,至此一个 Java 项目搭建好了!
Pom 包介绍
pom.xml 文件主要描述了项目包的依赖和项目构建时的配置,在默认的 pom.xml 包中分为四大块。
第一部分为项目的描述信息:
<groupId>com.neo</groupId>
<artifactId>hello</artifactId>
<version>2.0.5.RELEASE</version>
<packaging>jar</packaging>
<name>hello</name>
<description>Demo project for Spring Boot</description>
- groupId,项目的包路径;
- artifactId,项目名称;
- version,项目版本号;
- packaging,一般有两个值:jar、war,表示使用 Maven 打包时构建成 Jar 包还是 War 包;
- name,项目名称;
- description,项目描述。
第二部分为项目的依赖配置信息:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.5.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
- parent,标签内配置 Spring Boot 父级版本 spring-boot-starter-parent,Maven 支持项目的父子结构,引入父级后会默认继承父级的配置;
- dependencies,标签内配置项目所需要的依赖包,Spring Boot 体系内的依赖组件不需要填写具体版本号,spring-boot-starter-parent 维护了体系内所有依赖包的版本信息。
第三部分为构建时需要的公共变量:
<properties>
<project.build.sourceEncoding>UTF- 8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
上面配置了项目构建时所使用的编码,输出所使用的编码,最后指定了项目使用的 JDK 版本。
第四部分为构建配置:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
使用 Maven 构建 Spring Boot 项目必须依赖于 spring-boot-maven-plugin 组件,spring-boot-maven-plugin 能够以 Maven 的方式为应用提供 Spring Boot 的支持,即为 Spring Boot 应用提供了执行 Maven 操作的可能。spring-boot-maven-plugin 能够将 Spring Boot 应用打包为可执行的 jar 或 war 文件,然后以简单的方式运行 Spring Boot 应用。
以上即为 pom.xml 文件基础内容,几乎所有的 Spring Boot 项目都会用到以上配置信息。
创建SpringBoot项目的步骤图(在有网络连接的情况下)
第一步:
第二步:
第三步:
第四步:
第五步:
项目搭建好了,来一个hello world 感受感受
(1)可以在 Spring Initializr 上面添加,也可以手动在 pom.xml 中添加如下代码:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
pom.xml 文件中默认有个模块:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
- test,表示依赖的组件仅仅参与测试相关的工作,包括测试代码的编译和执行,不会被打包包含进去;
- spring-boot-starter-test 是 Spring Boot 提供项目测试的工具包,内置了多种测试工具,方便我们在项目中做单元测试、集成测试。
(2)编写 Controller 内容
在目录 src\main\java\com\neo\web 下创建 HelloController:
@RestController
public class HelloController {
@RequestMapping("/hello")
public String hello() {
return "hello world";
}
}
- @RestController 的意思是 Controller 里面的方法都以 JSON 格式输出,不需要有其他额外的配置;如果配置为 @Controller,代表输出内容到页面。
- @RequestMapping("/hello") 提供路由信息,"/hello" 路径的 HTTP Request 都会被映射到 hello() 方法上进行处理。
(3)启动主程序
右键单击项目中的 HelloApplication | run 命令,就可以启动项目了,若出现以下内容表示启动成功:
2018-09-19 13:33:57.801 INFO 32996 --- [ restartedMain] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8080 (http) with context path ''
2018-09-19 13:33:57.802 INFO 32996 --- [ restartedMain] com.neo.hello.HelloApplication : Started HelloApplication in 0.88 seconds
如果启动过程中出现 java ClassNotFoundException 异常,请检查 Maven 配置是否正确
Spring Boot 还提供了另外两种启动项目的方式:
- 在项目路径下,使用命令行 mvn spring-boot:run 来启动,其效果和上面“启动主程序”的效果是一致的;
- 或者将项目打包,打包后以 Jar 包的形式来启动。
# 进行项目根目录
cd ../hello
# 执行打包命令
mvn clean package
# 以 Jar 包的形式启动
java -jar target/hello-0.0.1-SNAPSHOT.jar
启动成功后,打开浏览器输入网址:http://localhost:8080/hello,就可以看到以下内容了:
hello world
最后再来个小补充
创建SpringBoot项目需要有网络,万一有一天我没有网络了怎么办?不要慌,这里还有一种解决方案,使用maven工程构建SpringBoot项目
第一步:
第二步:
第三步:
第四步
注意:
我在pom.xml文件中只引入了两个依赖,其实可以引入很多你需要的依赖