开发环境配置
JDK 1.8、Maven 3.8.8、 IDEA CE 2023.2
框架介绍
Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。简而言之,Spring Boot 通过提供默认配置的方式整合了所有的框架,让我们可以更加简单、快速、方便地构建应用程序。
创建 Spring Boot 项目
首先使用 IDEA 创建普通的 maven 项目,项目创建完成,依赖下载完毕后,修改 pom 文件,增加 Spring Boot 依赖,如下所示:
<!--Spring Boot的依赖管理-->
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.6.2</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><!--web 对应的依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>
</dependencies>
spring-boot-starter-parent 是 Spring Boot 项目用于管理各类组件依赖,它仅仅是管理版本的,并不会导入依赖,所以还需要引入 web 相关依赖,这里无需对 web 依赖填写版本,因为已引入 Spring Boot 版本 2.6.2,在它的统一pom 文件中已经对所有的经常使用的模块做了统一的依赖管理。
创建启动类
创建启动类,例如 DemoApplication,并对该启动类增加 Spring Boot 注解及 main 方法,如下:
@SpringBootApplication
public class DemoApplication {public static void main(String[] args) {SpringApplication.run(DemoApplication.class,args);}
}
运行 main 方法,最简单的 Spring Boot 服务即正常启动,默认的服务地址与端口号为:http://localhost:8080
Controller 开发
Controller 介绍
Controller 是 MVC(Model-View-Controller)架构模式中的一部分,用于处理用户请求和控制应用程序的行为,当用户发送请求时,应用程序的前端控制器(如 Servlet 或 Spring MVC 框架)会将请求路由到适当的 Controller 方法,进行相关处理。Controller 分为 @Controller 、 @RestController,两者主要区别:
-
@RestController 相当于 @Controller 和 @ResponseBody的组合,可以直接返回 JSON、XML 等数据格式的响应结果
-
@Controller 一般用来处理视图,需要配合模板引擎返回视图
-
@RestController 不能使用视图解析器返回视图,只能返回数据格式的响应结果
最简单的 Controller:
@RestController
//定义Controller路径
//@RequestMapping("my")
public class MyController {@GetMapping("test")//@RequestMapping(value ="/test",method = RequestMethod.GET)public String helloWorld(){return "hello world:"+new Date();}}
注解说明
创建 MyController 类,并对该类增加 @RestController 注解,对该类增加自定义方法,并对自定义方法添加注解
类的注解:@RestController、@RequestMapping("my")
@RestController 上文作介绍,添加该注解后即表明该类可以用来处理用户请求,当用户发送请求时,前端控制器会将请求路由到适当的 Controller 方法,进行相关处理,如果希望普通的 Java 类正常处理用户请求,该注解为必须项
@RequestMapping("my") 是对该 Controller 类增加的自定义路径,正常的 web 项目一般会有多个模块,为了对不同的模块进行区分,会对不同的模块服务访问细分路径。例如:该 Controller 类
-
未增加 @RequestMapping 注解时,服务访问地址为:http://localhost:8080/test
-
增加 @RequestMapping 注解时,服务访问地址为:http://localhost:8080/my/test
方法的注解:@RequestMapping、@GetMapping
上文示例中的自定义方法 helloWorld 如果想被前端控制器匹配到,需要增加方法注解,@RequestMapping 或@GetMapping,@GetMapping 相当于 @RequestMapping ,其中 method 为 GET,属于该注解的简化用法
@GetMapping("test") 等价于 @RequestMapping(value ="/test",method = RequestMethod.GET)
其他几类请求(POST、DELETE 等)同理,例如 POST请求:
@PostMapping("seedInfo") 等价于 @RequestMapping(value = "/seedInfo",method = RequestMethod.POST)
value 值是该自定义方法是的服务访问路径,如:http://localhost:8080/my/seedInfo ,用来与其他自定义方法区分
启动服务,在浏览器或 PostMan 中访问以上服务,即可正常响应返回信息
请求携带参数
对于自定义方法,我们可能会处理一些实体类,例如:
public class User {private String name;private int age;private String gender;public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getGender() {return gender;}public void setGender(String gender) {this.gender = gender;}
}
自定义方法:
@GetMapping("seedInfo")
//@PostMapping("seedInfo")
public User seedInfo(User user){return user;
}
对于 GET 请求,请求携带参数的方式如:http://localhost:8080/my/seedInfo?name=xiaohong&age=10&gender=girl
服务启动后,使用 Postman 访问以上请求,相应信息如下:
如果请求携带的参数没有匹配到所需的参数,所需的参数将返回该类型的默认值,例如不携带参数 age、gender:
POST 请求携带参数,此时自定义方法的注解应修改为 @PostMapping ,否则请求会 405 报错,正常修改后,请求如下:
POST 请求未包含所需参数,服务响应返回值同理返回默认值
Spring Boot 配置文件
老版本的 Spring Boot 项目使用 application.properties 保存配置信息,新版本的使用 application.yml 保存配置信息 ,application.yml 文件保存 src/main/resources 目录中,如果没有该文件,可以先新建该文件。在 在 IDEA 中也可安装、使用插件 Convert YAML and Properties Flie 将 application.properties 转换为 application.yml
右键点击 application.properties 文件,选择最上方的插件处理按钮即可完成转换
application.yml 配置信息可以配置非常多的信息,这里只做最简单的使用,更多是使用信息可依据项目需求,网络查找使用方式。这里我们如果希望修改 web 服务的路径及自定义端口,可以这样配置:
server:port: 8888servlet:context-path: /simple
以上文的请求为例:http://localhost:8080/my/seedInfo 需要修改为 http://localhost:8888/simple/my/seedInfo ,才能正常访问请求:
开源项目地址:GitHub - liuweiqiang2016/SpringBootDemo: SpringBoot 框架入门学习
参考文档:
springboot快速入门
SpringBoot中Controller用法及传参