构建SpringBoot项目
Spring Boot简单介绍
- spring框架是轻量级的,但它的配置却是重量级的
- 所以就在原有spring框架的基础上,通过注解的方式进一步简化spring框架的使用,并基于spring框架开发了全新的spring boot框架,需要说明的是:spring boot不是替代spring的解决方案(因为它本身不具备spring的核心特性和扩展功能,只是用于快速开发新一代基于spring框架的应用)
- spring Boot是Spring家族的一个子项目,设计初衷是为了简化Spring的配置
- springboot集成了大量常用的第三方配置,使用spring boot开发程序时,几乎是开箱即用(只需很少配置就能完成相应功能)
- 优点:①快速构建独立的spring应用 ②通过依赖启动器简化构建时的配置 ③极少的代码生成和xml配置:spring boot内部实现了与spring、以及其他常用第三方库的整合连接,并提供了默认最优化的整合配置,所以基本上不需要额外的配置;在需要自定义配置时,使用java config (java配置类)替换传统的xml配置方式,更便于查看和管理
一、使用Maven方式创建项目
1. 创建Maven项目
选Maven项目以及JDK
编辑项目名+GroupId,剩下都是默认给好的
项目创建完成后,会默认打开创建Maven项目生成的pom.xml依赖文件
2. 添加SpringBoot相关依赖
① 构建项目时,只需要添加相应的场景依赖(依赖启动器starter),SpringBoot就会根据添加的场景依赖自动进行配置(自动拉取相关JAR包)
② 通过依赖启动器简化构建配置。在构建过程中无需准备JAR包,只需根据开发所需的场景 来选择引入对应的依赖启动器(starter),在引入的依赖启动器内部已经包含了对应开发场景所需的依赖,并自动下载和拉取相关的JAR包。
在pom.xml中添加 构建SpringBoot项目 和 Web场景开发对应的依赖
①
spring-boot-starter-paren
:项目的统一父项目依赖管理。为什么叫统一父项目依赖管理,因为它就像所有依赖的父亲,它对常用框架的依赖文件进行版本统一管理。
- 例如spring,tomcat等,都有和该spring boot相匹配的版本,所以pom.xml引入依赖文件不需要标注它们的版本号,但是如果pom.xml中的依赖文件不是
spring-boot-starter-paren
管理的,就需要用<version>
指定它的版本号②
spring-boot-starter-web
:提供web开发场景所需的所有依赖,并对这些依赖进行统一管理(但是它们的版本号仍归spring-boot-starter-paren
管理)
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.wpz</groupId>
<artifactId>chapter01_maven_manual</artifactId>
<version>1.0-SNAPSHOT</version>
<!-- 引入 Spring Boot 依赖 -->
<!-- spring-boot-starter-paren 是springBoo框架 集成项目的统一父类管理依赖,添加后可以使用springBoot相关特性 -->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.1.3.RELEASE</version>
</parent>
<dependencies>
<!-- 引入 Web 场景依赖启动器 -->
<!-- spring-boot-starter-web 是springBoo框架对 web开发场景 集成支持的依赖启动器-->
<!-- 内部包含了web开发场景所需的依赖,自动导入springMVC框架相关依赖(JAR包)进行web开发-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
</project>
2.1引申:IntelliJ IDEA2020不能自动导入依赖
- Idea2020版本不能自动导入依赖了,使用ctrl+shift+o或点击如下图标 导入依赖(导入时间较长需等待)
- 可以配置 Maven 镜像(拉取依赖时速度更快)
打开 maven 解压目录,选择 config/settings.xml,找到<mirrors>
,将下述代码复制粘贴。
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
3. 编写主程序启动类
java目录就是装java源程序的
编写主程序启动类
①
@SpringBootApplication
:标记为主程序启动类,能扫描Spring组件并自动配置spring boot
- 这是一个组合注解,其中@AutoConfigurationPackage:获取项目主程序启动类所在的根目录,从而指定后续组件扫描器要扫描的包位置,所以项目主程序类要定义在最外层的根目录位置(也就是子包和类要在主程序启动类所在的包中),这样才能包中定义的类能被组件扫描器扫描
②
SpringApplication.run()
:springboot执行流程是从项目启动入口=>@SpringBootApllication标注的类的main()方法进入,然后执行main()中的SpringApplication.run()
,该方法内部执行两个操作,分别是SpringApplication实例初始化和调用run()启动项目
package com.wpz;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
/**
* @author 王胖子
* @version 1.0
* 1. 解读:如果什么注释都不加,那么该类只是一个普通类,如果想把该类当作
* SpringBoot项目的主程序启动类,则需要在类上添加@SpringBootApplication
* 2. @SpringBootApplication + SpringApplication.run()
*/
@SpringBootApplication//标记该类为主程序启动类
public class ManualChapter01Application {
public static void main(String[] args) {
//启动主程序类:SpringApplication.run
//- 参数为主程序类的编译文件(类名.class) 和 args数组
SpringApplication.run(ManualChapter01Application.class, args);
}
}
4. 创建用于Web访问的Controller
com.wpz包下创建controller包,该包中新建HelloController类
编写Controller类
- HelloController类是请求处理控制类,该类中包括请求处理的方法
@RestController组合注解:@Controller+@ResponseBody
=>
该类当作控制层组件添加到Spring容器中 + 该类的方法无法返回JSP页面,会返回JSON字符串@GetMapping("/hello")组合注解:@RequestMapping(method=RequestMethod.GET)
=>
设置方法的访问路径 + 访问方式为Get
package com.wpz.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 王胖子
* @version 1.0
* 1. HelloController类是请求处理控制类,该类中包括请求处理的方法
* 2. 将该类设置成请求处理控制类,hello()设置成请求处理方法
* ① 类上标注:@RestController
* ② 方法上标注:@GetMapping("/hello")
* 3. 解读两个注解:
* ① @RestController组合注解:@Controller+@ResponseBody=>
* 该类当作控制层组件添加到Spring容器中 + 该类的方法无法返回JSP页面,会返回JSON字符串
* ② @GetMapping("/hello")组合注解:@RequestMapping(method=RequestMethod.GET)
* 设置方法的访问路径 + 访问方式为Get
*/
@RestController//请求处理控制类
public class HelloController {
@GetMapping("/hello")//请求处理的方法
public String hello() {
return "wpz say hello Spring Boot";
}
}
5. 运行项目
点击运行主程序启动类
启动成功后,在控制台会发现SpringBoot项目默认启动的端口号为:8080
在浏览器中输入http://localhost:8080/hello
页面中显示出:请求处理方法中输出的语句
总结
① 第一步:在pom.xml中添加该项目开发场景所需的依赖启动器。springBoot会根据依赖启动器 自动导入需要的JAR包
② 第二步:编写主程序启动类。需要在该类上标注@SpringBootApplication来告诉SpringBoot,这个类就是主程序启动类,接着需要在main()方法中使用SpringApplication.run()启动主程序类,如果不启动主程序类而直接运行,那么springBoot不会继续扫描com.wpz包下的Controller类,也就不会执行请求处理方法了
③ 第三步:编写Controller类。用@Controller或者@RestController标注该类为控制层的类,@GetMapping标注请求处理方法的访问路径以及访问的方式
④ 第四步:运行。运行主程序类,然后在浏览器中输入访问路径。
二、使用Spring Initializr方式构建Spring项目(推荐)
Spring Initializr 是一个Web应用,它提供了一个基本的项目结构,帮助我们快速构建一个基础的Spring Boot项目
1. 创建Spring Boot项目
创建新项目:项目类型选Spring Initializr
项目配置信息
package中 根据Group和Artifact定义了 项目创建的包名
项目依赖选择
项目名和路径(默认的)
默认生成的项目目录结构
1.1引申:解决Intellij IDEA新建Springboot项目没有Spring Initializr选项
① File–>Settings–>plugin,搜索Spring Assistant,点击install
②重启Idea再创建项目就有了
2. 创建用于web访问的Controller
在主程序启动类所在的包下创建controller包,包下创建HelloController类
编写HelloController类(和第一种方法中的相同)
package com.wpz.chapter01.controller;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @author 王胖子
* @version 1.0
* 1. HelloController类是请求处理控制类,该类中包括请求处理的方法
* 2. 将该类设置成请求处理控制类,hello()设置成请求处理方法
* ① 类上标注:@RestController
* ② 方法上标注:@GetMapping("/hello")
* 3. 解读两个注解:
* ① @RestController组合注解:@Controller+@ResponseBody=>
* 该类当作控制层组件添加到Spring容器中 + 该类的方法无法返回JSP页面,会返回JSON字符串
* ② @GetMapping("/hello")组合注解:@RequestMapping(method=RequestMethod.GET)
* 设置方法的访问路径 + 访问方式为Get
*/
@RestController//请求处理控制类
public class HelloController {
@GetMapping("/hello")//请求处理的方法
public String hello() {
return "wpz say hello Spring Boot by Spring Initializr";
}
}
3. 运行项目
运行成功后,在浏览器中访问http://localhost:8080/hello
总结
① 第一步:使用Spring Initializr创建Spring Boot项目,并完成项目配置、项目依赖、项目名称和路径的选择
② 第二步:写Controller类(和上一种方法一致)
③ 第三步:运行
说明: 使用这种方式构建项目,会自动生成一个项目结构框架,并且主程序启动类和pom.xml自动写好了