SpringBoot官网首页:https://spring.io/projects/spring-boot/
JavaEE体系结构包括四层,从上到下分别是应用层、Web层、业务层、持久层。Struts和SpringMVC是Web层的框架,Spring、SpringBoot是业务层的框架,Hibernate和MyBatis是持久层的框架。
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。
SpringBoot基于Spring4.0设计,不仅继承了Spring框架原有的优秀特性,而且还通过简化配置来进一步简化了Spring应用的整个搭建和开发过程。另外SpringBoot通过集成大量的框架使得依赖包的版本冲突,以及引用的不稳定性等问题得到了很好的解决。
在以往我们通过SSM(Spring + SpringMVC +Mybatis)框架进行开发的时候,需要配置大量的配置文件,而且容易出错,而SpringBoot
省去了繁琐的配置。
SpringBoot所具备的特征有:
(1)可以创建独立的Spring应用程序,并且基于其Maven或Gradle插件,可以创建可执行的JARs和WARs;
(2)内嵌Tomcat或Jetty等Servlet容器;
(3)提供自动配置的“starter”项目对象模型(POMS)以简化Maven配置;
(4)尽可能自动配置Spring容器;
(5)提供准备好的特性,如指标、健康检查和外部化配置;
(6)绝对没有代码生成,不需要XML配置。
通常用在启动类上,申明让spring boot自动给程序进行必要的配置,它也是 Spring Boot 的核心注解,主要组合包含了以下 3 个注解:
组合了 @Configuration 注解,实现配置文件的功能。
这个注解才是实现自动装配的关键,点进去之后发现,它是一个由 @AutoConfigurationPackage 和 @Import 注解组成的复合注解。
打开自动配置的功能,也可以关闭某个自动配置的选项。
如关闭数据源自动配置功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class });
@AutoConfigurationPackage表示自动注入包,@Import将类注入到Spring容器中
Spring组件扫描功能,让spring Boot扫描到Configuration类并把它加入到程序上下文。
如果有不会安装的小伙伴可以看这个文档:https://blog.csdn.net/ITKidKid/article/details/130265566
JDK1.8
Maven|Gradle(根据自己项目所需的构建工具选择,这里我们使用的是Maven构建工具)
IDEA
官方:提供了一个快速生成的网站,IDEA集成了这个网站(首选)
https://start.spring.io/
src/main/java路径:主要编写业务程序
src/main/resources路径:存放静态文件和配置文件
src/test/java路径:主要编写测试程序
如下所示
├── src
│ ├── main
│ │ ├── java
│ │ │ └── com
│ │ │ └── example
│ │ │ └── demo
│ │ │ ├── controller
│ │ │ │ ├── HomeController.java
│ │ │ │ └── ...
│ │ │ ├── service
│ │ │ │ ├── UserService.java
│ │ │ │ └── ...
│ │ │ ├── dao(mapper)
│ │ │ │ ├── UserDao.java
│ │ │ │ └── ...
│ │ │ ├── model
│ │ │ │ ├── User.java
│ │ │ │ └── ...
│ │ │ └── DemoApplication.java
│ │ ├── resources
│ │ │ ├── static
│ │ │ ├── templates
│ │ │ ├── application.properties
│ │ │ ├── application.yml
│ │ │ └── ...
│ │ └── webapp
│ └── test
│ ├── java
│ │ └── com
│ │ └── example
│ │ └── demo
│ │ ├── controller
│ │ ├── service
│ │ ├── dao
│ │ ├── model
│ │ └── DemoApplicationTests.java
│ └── resources
│ └── ...
└── pom.xml
如图所示
其中,controller包含处理HTTP请求的控制器;service包含业务逻辑;dao(mapper)包含与数据库进行交互的接口;model包含实体类;resources包含配置文件和静态资源文件;TestDemoApplication是启动类。dto用于数据传输;vo用于视图展示;util用于工具类编写;config用于配置类编写;static用于存放存放静态资源。如图片、CSS、JavaScript 等;templates用于存放 Web 页面的模板文件;application.properties/application.yml(两个文件格式有所不同) 用于存放程序的各种依赖模块的配置信息,比如 服务端口,数据库连接配置等;.gitignore:使用版本控制工具 git 的时候,设置一些忽略提交的内容 ;.idea 本地Idea编译器的配置,一般用git做版本控制的时候会把.idea文件夹排除;
tests目录包含了测试代码,其中DemoApplicationTests是Spring Boot自动生成的默认测试类,可以在此编写单元测试和集成测试。pom.xml是Maven项目的配置文件,其中包含了项目的依赖项和构建配置。
讲到打包,就必须要讲一下Jar包和War包
Maven项目:单模块项目在pom.xml添加打包插件,多模块项目需要在启动类下的pom.xml添加打包插件,如下所示,必须添加以下打包插件,否则会导致目录结构不一样,导致程序运行不了。
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
Maven打包命令:在idea中Terminal控制台执行maven打包命令,需要到项目的子目录下 -Dmaven.test.skip=true //跳过测试
mvn clean package -Dmaven.test.skip=true
可视化打包:右击右边的Maven进行如下图操作进行Maven打包
可视化打包:点击Gradle --》点击jar就是将整个项目打包
点击Gradle --》点击build就是将整个项目包夸所有依赖进行打包
Spring MVC属于SpringFrameWork的后续产品,已经融合在Spring Web Flow里面。Spring 框架提供了构建 Web 应用程序的全功能 MVC 模块。使用 Spring 可插入的 MVC 架构,从而在使用Spring进行WEB开发时,可以选择使用Spring的Spring MVC框架或集成其他MVC开发框架,如Struts1(现在一般不用),Struts 2(一般老项目使用)等等。
视图流程
具体流程如下:
在web层的pom.xml添加如下依赖
org.springframework.boot
spring-boot-starter-web
作用:标识一个类为SpringMVC的控制器,@Controller是一个用于标识控制器的注解。使用@Controller注解的类通常处理HTTP请求,并返回响应结果。
// @RequestBody + @Controller === @RestController
作用:标识一个类为SpringMVC的Rest风格的控制器,@RestController是一个用于标识Rest风格控制器的注解。与@Controller注解不同,@RestController注解的类中的所有方法都将以JSON或XML形式返回响应结果
// @RequestMapping(value = “/index”,method = RequestMethod.POST) === @PostMapping(value = “/index”)
Spring MVC 通过 @RequestMapping 注解将 URL 请求与业务方法进行映射,在控制器的类定义处以及方法定义处都可以添加 @RequestMapping,在类定义处添加相当于多了一层访问路径。
常用参数
value:指定 URL 请求的实际地址,是 @RequestMapping 的默认值
method:指定请求的 method 类型,包括 GET、POST、PUT、DELETE ,分别对应 GET、POST、PUT、DELETE 方式请求等。
作用:将请求体的内容绑定到控制器方法的参数上。@RequestBody是一个用于获取HTTP请求体中的参数的注解,在SpringMVC中非常常用。它可以用于方法参数级别,用于指定获取请求体参数的方式。
作用:将控制器方法的返回值直接写入HTTP响应体中。@ResponseBody是一个用于将方法的返回值转换成HTTP响应体的注解,在SpringMVC中非常常用。它可以用于方法级别,用于指定将方法的返回值转换成HTTP响应体,并发送给客户端。
作用:将请求参数绑定到控制器方法的参数上。@RequestParam是一个用于获取HTTP请求参数的注解,在SpringMVC中非常常用。它可以用于方法参数级别,用于指定获取请求参数的方式和名称。
作用:将URL中的一部分作为控制器方法的参数。@PathVariable是一个用于获取HTTP请求路径中的参数的注解,在SpringMVC中非常常用。它可以用于方法参数级别,用于指定获取请求路径参数的名称。
作用:将请求参数绑定到一个对象上。@ModelAttribute是一个用于将HTTP请求参数绑定到方法参数或方法返回值上的注解,在SpringMVC中非常常用。它可以用于方法参数级别,用于指定使用HTTP请求参数来绑定方法参数上的属性值。
作用:用于处理异常的注解。@ExceptionHandler是一个用于处理控制器中出现的异常的注解,在SpringMVC中非常常用。它可以用于方法级别,用于指定处理控制器中出现的异常的方式。
作用:用于定义全局控制器异常处理器。@ControllerAdvice是一个用于定义全局控制器通知的注解,在SpringMVC中非常常用。它可以用于类级别,用于定义全局控制器通知。
@RestController
public class TestController {
// 请求方式 http://IP:端口/index1
// 这个请求方式 === @GetMapping("/index1")
@RequestMapping(value = "/index1",method = RequestMethod.GET)
public String test1(){
return "testDemo1";
}
// 请求方式 http://IP:端口/index2?id=999
// @RequestParam 用于指定获取请求参数的方式和名称,放在方法里面使用
@GetMapping("/index2")
public String test2(@RequestParam Integer id){
return "testDemo2:"+id;
}
// 请求方式 http://IP:端口/index3/123
// @PathVariable 用于获取路径中的参数,放在方法里面使用
@GetMapping("/index3/{id}")
public String test3(@PathVariable Integer id){
return "testDemo3:"+id;
}
// 请求方式 http://IP:端口/index4
// @RequestBody 它可以用于方法参数级别,用于指定获取请求体参数的方式
@GetMapping("/index4")
public Map test4(@RequestBody Map<String,Object> map){
return map;
}
// 请求方式 http://IP:端口/index5
// @ResponseBody 将请求体的内容绑定到控制器方法的参数上 ,会直接返回 json 数据
@GetMapping("/index5")
@ResponseBody
public String test5(@RequestBody Map<String,Object> map){
return "testDemo5:" +map;
}
}
使用测试工具进行测试就可以了
至此我们的SpringBoot项目搭建就学习完了。
感谢以下博主:https://blog.csdn.net/a374519711/article/details/128616520
https://blog.csdn.net/litianxiang_kaola/article/details/79169148
https://blog.csdn.net/qq_46138492/article/details/129471296