文章目录
- Springboot是什么
- Springboot2.x依赖环境和版本新特性说明
- 为什么学习Springboot
- 从springboot优点来看
- 从未来发展的趋势来看
- 开发环境
- Spring Boot开发环境搭建和项目启动
- jdk 的配置
- Spring Boot 工程的构建
- maven配置
- IDEA 快速构建
- maven 创建工程
- 常用注解
- 完整代码
Springboot是什么
Spring Boot是一个用于开发Java应用程序的开源框架。它基于Spring框架,简化了Spring应用程序的配置和部署过程。Spring Boot通过自动配置来减少开发者的工作量,提供了一种快速构建应用程序的方式。
Springboot2.x依赖环境和版本新特性说明
讲解新版本依赖环境和Springboot2新特性概念
- 依赖版本jdk8以上,Springboot2.x用JKD8,因为底层是Spring framework5,
- 安装maven最新版本,maven3.2以上版本
- 新特性
- 翻译工具:https://translate.google.cn/
- springbootGitHub地址:http://github.com/spring-projects/spring-boot
- Springboot官方文档:http://spring.io/guides/gs/spring-boot
为什么学习Springboot
从springboot优点来看
- 简化配置:Spring Boot提供了自动配置的功能,可以根据项目的依赖和环境自动配置应用程序。开发者无需手动配置大量的XML文件或注解,可以快速搭建整个项目的基础框架。
- 快速开发:Spring Boot提供了许多开箱即用的功能和扩展库,可以大大减少开发时间和工作量。开发人员可以通过使用这些功能和库快速搭建应用程序,而无需重复编写常见的代码。
- 独立性:Spring Boot应用程序可以作为独立的可执行文件运行,无需外部的Web服务器。它内置了嵌入式Web服务器(如Tomcat、Jetty等),可以直接运行应用程序。这样可以减少部署和运维的复杂性
- 易于测试:Spring Boot提供了一系列的测试工具和框架,可以方便地进行单元测试、集成测试和端到端测试。开发者可以使用这些工具来保证应用程序的质量和稳定性。
- 生态系统:Spring Boot是在Spring框架之上构建的,可以充分利用Spring框架丰富的生态系统。开发者可以方便地集成其他Spring组件和第三方库,提供更灵活和可扩展的解决方案。
从未来发展的趋势来看
Spring Boot未来发展的趋势是更加注重微服务架构、云原生应用、响应式编程、安全性增强以及更好的集成和开发体验。这些趋势将有助于Spring Boot在未来持续地发展和壮大,并进一步提升在开发者中的地位和影响力。
开发环境
开发工具
- JDK版本
- Spring Boot版本
- Maven版本:3.5.2
涉及到的插件:
- FastJson
- Swagger2
- Thymeleaf
- MyBatis
- Redis
- ActiveMQ
- Shiro
- Lucence
- YAML
Spring Boot开发环境搭建和项目启动
jdk 的配置
使用 IDEA 进行开发,在IDEA 中配置 jdk 的方式很简单,打开文件->项目结构,如下图所
- 选择 SDKs
- 在 JDK home path 中选择本地 jdk 的安装目录
- 在 Name 中为 jdk 自定义名字
Spring Boot 工程的构建
maven配置
创建了 Spring Boot 项目之后,需要进行 maven 配置。打开文件->设置,搜索 maven,配置一下本地的 maven 信息。如下
IDEA 快速构建
在IDEA 中可以通过文件->新建->项目来快速构建 Spring Boot 工程。如下,选择 Spring Initializr,在 Project SDK 中选择刚刚我们导入的 jdk,点击 Next,到了项目的配置信息。
组:填企业域名,本课程使用com.itcodai
工件:填项目名称,本课程中每一课的工程名以course+课号命令,这里使用 course01
依赖项:可以添加我们项目中所需要的依赖信息,根据实际情况来添加,本课程只需要选择 Web 即可。
maven 创建工程
Springboot是建立在maven上的我们只需要创建一个maven工程导入SpringBoot依赖即可
不需要选择原型
输入项目名称点击完成即可
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.5.7</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//这是一个复合注解,通常情况下,我们会把启动类放到项目的顶级目录
//注意:SpringBootApplication中的@ComponentScan会默认扫描本类所在包一下的子包
@SpringBootApplication
public class DemoAplication {
public static void main(String[] args) {
SpringApplication.run(DemoAplication.class,args);
}
}
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloController {
@RequestMapping("/")
public String hello(){
return "hello";
}
}
重新运行 main 方法启动项目,在浏览器中输入 localhost:8080,如果看到“hello”,那么恭喜你项目启动成功!Spring Boot 就是这么简单方便!端口号默认是8080,如果想要修改,可以在 application.properties 文件中使用 server.port 来人为指定端口,如811端口
server.port=811
常用注解
启动类的注解
@SpringBootApplication是一个复合注解。@SpringBootApplication=@SpringBootConfiguration+@EnableAutoConfiguration+@ComponentScan
@SpringBootConfiguration:@SpringBootConfiguration标注在类上,相当与把该类作为Spring的xml配置文件中的<beans> 作用为:配置Spring容器(应用上下文)
@EnableAutoConfiguration:开启自动配置。MATA-INF下的Spring.facotries的一些自动配置类
@ComponentScan:扫描注解。如果不配置basepackage,默认扫描@ComponentScan注解类的同级类和子目录下的所有类。所以要把启动类放到顶级目录。
控制层的注解
@RestController and @RequestMapping是SpringMvc的注解,不是SpringBoot的特有的
@RestController = @Controller+@ResponseBody
完整代码
//bean类
import com.fasterxml.jackson.annotation.*;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
public class Person implements Serializable {
private String userid;
@JsonIgnore//字段不返回
private int age;
@JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式
private Date time;
@JsonProperty("dizi")//指定别名 注意:使用别名后,请求中key也要使用别名
private String address;
@JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回
private String mailbox;
}
Controller类
import com.demo.bean.Person;
import org.springframework.web.bind.annotation.*;
@RestController
public class HelloController {
@RequestMapping("/")
public String hello(){
return "hello";
}
/**
* 功能描述:restful协议。从路径中获取参数
* 1.接口中的参数定义,建议使用下划线隔开,不在使用驼峰
* 2.path="/{cityid}/{userid}",标识路径中那些参数
* 3.method=RequestMethod.GET,只处理get请求
* 4.@PathVariable("cityid"),从路径中取出参数值
* @return
*/
@RequestMapping(value = "/{cityid}/{userid}",method = RequestMethod.GET )
public Object test(
@PathVariable("cityid")String cityid,
@PathVariable("userid")String userid){
return cityid+"---"+userid;
}
/**
*参数的默认值设置
* 添加@RequestParam 默认此参数是必填的
* @return
*/
@RequestMapping("/test02")
public Object test02(@RequestParam(required = false,defaultValue = "2") Integer pageNo){
return pageNo;
}
/**
* 测试@RequestBody。要从请求体中获取数据
* 有如下要求:
* 1.数据要在请求体中
* 2.数据的格式为content-type 是值是application/json
* @return
*/
@RequestMapping("/test03")
public Object test03(@RequestBody Person person){
return person;
}
/**
* 从请求头获取数据
* 一般情况下请求头中放置认证信息,例如access_token
* @param access_token
* @return
*/
@RequestMapping("/test04")
public Object test04(@RequestHeader String access_token){
return access_token;
}
/**
* 获取实体类的参数
* @JsonIgnore//字段不返回
* @JsonFormat(pattern = "yyyy-MM-dd")//指定时间格式
* @JsonProperty("")//指定别名 注意:使用别名后,请求中key也要使用别名
* @JsonInclude(JsonInclude.Include.NON_NULL)//空字段不返回
* @return
*/
@RequestMapping("/test05")
public Object test05(@RequestBody Person person){
return person;
}
}
//pom.xml
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.5</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-generator</artifactId>
<version>3.5.1</version>
</dependency>
</dependencies>