PS:任何时候只要决定开始都不算晚。
Spring Boot 是用来简化 Spring 应用程序的开发的,可以减少不必要的配置过程,其主要特性包括 Spring Boot Starter、自动配置、命令行接口、Actuator 等,作为 Android 开发者对 Spring Boot 的学习将以会使用为主,所有文章会基于对应的案例,本篇文章将从以下几个方面介绍如何使用 Spring Boot 开发一个接口:
- Spring Boot项目初始化
- 使用IDEA创建Spring Boot项目
- Spring Boot项目目录结构
- 简述POM文件
- 实现一个简单的接口
- 接口测试
Spring Boot项目初始化
创建 Spring 应用程序都是从 Spring Initializr 开始,可以快速的选择项目的依赖项,可以访问
https://start.spring.io/
来完成 Spring 应用程序的创建,如下图所示:

通过配置可生成对应配置信息的项目源码包,使用 IntelliJ IDEA 或其他 IDE 打开即可。
使用IDEA创建Spring Boot项目
最常见的方式肯定是使用 IDE 来进行 Spring 相关项目的创建,这里选择 IntelliJ IDEA 来创建 Spring Boot 项目。
第一步:选择 File->New->Project,如下:
第二步:选择 Spring Initializr,Project SDK 至少为 JDK 1.8,然后选择 Next:
第三步:根据项目配置项目信息,然后选择 Next:
第四步:选择 Web->Spring Web 以及 Spring Boot 的版本,这一步实际上就是为该项目添加了支持 Web 开发的依赖,之后会在 pom 文件中看到相关依赖,然后选择 Next:
第五步:选择 Finish 完成项目的创建:
Spring Boot项目目录结构
Spring Boot 项目的主要目录结构如下:
│ pom.xml
└─src
├─main
│ ├─java
│ │ └─com
│ │ └─manu
│ │ └─hello
│ │ SpringBootHelloWorldApplication.java
│ │
│ └─resources
│ │ application.properties
│ │
│ ├─static
│ └─templates
└─test
└─java
└─com
└─manu
└─hello
SpringBootHelloWorldApplicationTests.java
主要目录与文件介绍如下:
- pom.xml:项目基于 mavan 的依赖配置文件,如果项目基于 gradle,则有对应的 gradle 文件;
- src/main/java:项目源代码目录;
- src/main/resources:资源文件目录;
- src/test:测试文件目录;
- application.properties:配置文件,也可以使用 yml 文件进行配置;
- static:静态资源文件目录,如 html、css、js 等;
- templates:模板文件目录,如 Thymeleaf 等;
- SpringBootHelloWorldApplication:项目启动类。
简述POM文件
POM 是项目对象模型(Project Object Model)的简称,maven 项目通过 xml 来进行项目配置,pom.xml 就是用来配置 maven 项目的,pom.xml 文件类似于 Android 开发中的 build.gradle 文件,当然 Spring Boot 项目也可以使用 gradle 来进行构建,主要用来管理项目依赖、配置项目信息等,来看一下 Spring Web 项目的 pom 文件内容:
<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0modelVersion><parent><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-parentartifactId><version>2.2.5.RELEASEversion><relativePath /> parent><groupId>com.manugroupId><artifactId>spring-boot-hello-worldartifactId><version>0.0.1-SNAPSHOTversion><packaging>jarpackaging><name>spring-boot-hello-worldname><description>Spring Boot sample for Hello World!description><properties><java.version>1.8java.version>properties><dependencies><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-webartifactId>dependency><dependency><groupId>org.springframework.bootgroupId><artifactId>spring-boot-starter-testartifactId><scope>testscope>dependency>dependencies><build><plugins><plugin><groupId>org.springframework.bootgroupId><artifactId>spring-boot-maven-pluginartifactId>plugin>plugins>build>project>
至于 pom 文件的其他具体配置这里不做细究。
实现一个简单的接口
根据上面步骤项目已经创建好了,项目启动类如下:
@[email protected]@Configuration//@SpringBootApplicationpublic class SpringBootHelloWorldApplication {public static void main(String[] args) {// 启动程序,包括Spring容器、内嵌的Tomcat等
SpringApplication.run(SpringBootHelloWorldApplication.class, args);
}
}
其中
@SpringBootApplication
相当于
@EnableAutoConfiguration
、
@ComponentScan
和
@Configuration
一起使用,主要用来配置启动类,这里将在此基础上实现一个接口,首先创建一个
MessageBean
作为返回的实体类,如下:
public class MessageBean {private long id;private String author;private String message;public MessageBean(long id, String author, String info) {this.id = id;this.author = author;this.message = info;
}// ...
}
然后,创建对应的控制器类,其中注解
@RestController
将类
HelloWorldController
标记为一个控制器,该类里面的方法的返回都将被转换成对象而不是页面视图,等价于注解
@Controller
和
@ResponseBody
一起使用。
返回的
MessageBean
将会被转换成
json
,这个过程由 Spring 的 HTTP 消息转换器自动支持,最终使用
MappingJackson2HttpMessageConverter
将
MessageBean
对象转换为对应的
json
格式
//@Controller//@[email protected] class HelloWorldController {private final AtomicLong counter = new AtomicLong();// @RequestMapping(value = "/message", method = RequestMethod.GET)@GetMapping("/message")public MessageBean message(@RequestParam(name = "author", defaultValue = "jzman") String author,
@RequestParam(name = "message", defaultValue = "Hello world!") String message) {return new MessageBean(counter.incrementAndGet(), author, message);
}
}
@RestController
相当于
@Controller
和
@ResponseBody
一起使用的效果,就是将 Controller 中返回的对象转换为对应的格式。
@Controller
负责的类的注入操作,这里不进行深入,如果用过 Android 开发中的 Dagger 框架可有助于理解注解
@Controller
的使用,
@ResponseBody
主要是标识将返回的对象转换为特定的格式,默认是 json 格式。
@RequestMapping
用于地址映射,可在类上和方法上使用,如果在类上使用,该类中所有响应请求的方法都要以此为父路径,如果在方法上使用则表示当前响应的路径,如上代码中实现一个 GET 请求可以使用
@RequestMapping
,也可以使用
@GetMapping
,
@GetMapping
实际上默认指定了请求方法为
RequestMethod.GET
,此外
@RequestParam
用来配置请求参数。
接口测试
运行
SpringBootHelloWorldApplication
,运行成功截图如下:
访问下面接口查看返回的数据:
http://localhost:8080/message?author=jzman&message=Hello
返回数据如下:
{"id":3,"author":"jzman","message":"Hello"}
至此,使用 Spring Boot 实现了一个简单的接口。
---END---
创作不易,点个“在看”