一、SpringBoot 简介
- SpringBoot:build anything、集成大量的第三方库配置、无容器的web应用程序体系结构、“零配置” out of the box
- 优点:基于Spring、简化编码、简化配置、简化部署、简化监控
二、SpringBoot 快速入门
-
IDEA 构建 SpringBoot 项目并启动测试
- 打开 IDEA 选择新建 Spring Initializr 项目
- 点击下⼀步继续创建,设置项目名,包名,语言描述等信息(特别注意项目名在IDEA 中必须小写):
- 下⼀步开发工具里面选择热部署和lombok
- web里面选择Spring Web
- 设置项目的路径然后点击完成
- SpringBoot项目的基本目录结构生成,第⼀时间选择自动导入
- 在这个目录下新增一个类
- 新增类
- 分别新增包和类controller.HelloController
- 生成类后编写代码
- 打开自动生成的类中的main方法
- 选择运行该main方法
- 启动项目
- 打开浏览器输入地址信息http://localhost:8080/并运行
- 到此为止Spring Boot项目搭建完毕
三、SpringBoot的项目结构
-
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.0</modelVersion> <!-- 设置当前项⽬的⽗项⽬为spring-boot-starter-parent 标记当前项⽬为⼀个springboot的项⽬版本为2.2.6 --> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.2.6.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.qfedu</groupId> <artifactId>days01_springboot_demo01</artifactId> <version>0.0.1-SNAPSHOT</version> <name>days01_springboot_demo01</name> <description>Demo project for Spring Boot</description> <properties><java.version>1.8</java.version></properties> <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> <scope>runtime</scope> <optional>true</optional> </dependency> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-test</artifactId> <scope>test</scope> <exclusions> <exclusion> <groupId>org.junit.vintage</groupId> <artifactId>junit-vintage-engine</artifactId> </exclusion> </exclusions> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project>
-
src目录结构
- 说明:注意Days01SpringbootDemo01Application这个类咱们刚刚在项目向导生成过程中放到了com.qfedu 下,该类是当前项目的主启动类。
- 我们在 com.qfedu 包下新建的 controller 子包后才建的HelloController类,只有在子包下才会被扫描到 resources 下放的都是资源文件,里面有:
- static 目录:主要放静态资源;
- templates目录:里面放模版文件;
- application.properties文件:主要用来配置当前的 SpringBoot项目。
-
maven构建SpringBoot工程
- 在maven项目中将当前项目的⽗项目设置为SpringBoot项目,那么当前项目也就是⼀个SpringBoot项目,添加SpringBoot⼀样的依赖即可
四、SpringBoot的启动类
-
@SpringBootApplication注解介绍
- @SpringBootApplication is a convenience annotation that adds all of the following:
- @Configuration:Tags the class as a source of bean definitions for the application context.
- @EnableAutoConfiguration:Tells Spring Boot to start adding beans based on classpath settings, other beans, and various property settings. For example, if spring-webmvc is on the classpath, this annotation flags the application as a web application and activates key behaviors, such as setting up a DispatcherServlet .
- @ComponentScan:Tells Spring to look for other components, configurations, and services in the com/example package, letting it find the controllers.
-
@Configuration注解介绍
- @Configuration:Tags the class as a source of bean definitions for the application context.
@Bean注解介绍
对于Spring而言,所有的对象都可以被认为是bean对象,Spring会管理所有的对象-
starter介绍
- starter简单介绍
五、SpringBoot的配置文件
-
yml文件的介绍
- YAML(Yet Another Markup Language)(发音 /ˈjæməl/ ) ⼀种基于Unicode容易阅读,容易和脚本语言交互的,用来表达资料序列的编程语言。
- 适应场景 脚本语言:由于实现简单,解析成本很低,YAML 特别适合在脚本语言中使用序列化:YAML是由宿主语言数据类型直转,的比较适合做序列化。
- 配置文件:写 YAML 要比写 XML 快得多(无需关注标签或引号),并且比 INI 文档功能更强。由于兼容性问题,不同语言间的数据流转建议不要用 YAML。
- 语言优点:YAML易于⼈们阅读。 YAML数据在编程语言之间是可移植的。 YAML匹配敏捷语言的本机数据结构。 YAML具有⼀致的模型来⽀持通用工具。 YAML支持单程处理。 YAML具有表现力和可扩展性。 YAML易于实现和使用。
- YAML 语法:使用空格 Space 缩进表示分层,不同层次之间的缩进可以使用不同的空格数目,但是同层元素⼀定左对齐,即前面空格数目相同(不能使用 Tab,各个系统 Tab对应的 Space 数目可能不同,导致层次混乱)
- ‘#’表示注释,只能单行注释,从#开始处到行尾
- 破折号后面跟⼀个空格(a dash and space)表示列表
- 用冒号和空格表示键值对 key: value 简单数据(scalars,标量数据)可以不使用引号括起来,包括字符串数据。
- 用单引号或者双引号括起来的被当作字符串数据,在单引号或双引号中使用C风格的转义字符 Sequence of Scalars 简单数据列表
-
yml文件的使用
- 配置对象数据语法:key:key1: value1key2: value2 或者:key: {key1: value1,key2: value2}。示例代码:
person: name: AAA age: 18 addr: AA #或者 person: {name: AAA,age: 18,addr: AA}
- 注意:key1前面的空格个数不限定,在yml语法中,相同缩进代表同⼀个级别
配置Map数据同上面的对象写法同上面的对象写法
配置数组(List、Set)数据语法:key:- value1- value2 或者:key: [value1,value2]。示例代码:
my: city: - AAA - BBB - CCC - DDD - EEE #或者 my: city: [AAA,BBB,CCC,DDD,EEE] #集合中的元素是对象形式 student: -name: A age: 18 score: 100 -name: B age: 28 score: 88 -name: C age: 38 score: 90
- 注意:value1与之间的 - 之间存在⼀个空格
六、 SpringBoot常用配置
- 多环境
- @ConfigurationProperties
七、 SpringBoot整合Mybatis
-
基本配置
- pom.xml文件添加依赖
<dependency> <groupId>org.mybatis.spring.boot</groupId> <artifactId>mybatis-spring-boot-starter</artifactId> <version>1.3.2</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>druid</artifactId> <version>1.0.28</version> </dependency> <dependency> <groupId>mysql</groupId> <artifactId>mysql-connector-java</artifactId> </dependency>
- 在resources下新增⼀个application.yml
spring: datasource: url: jdbc:mysql://localhost:3306/supermarket?useSSL=true&serverTimezone=UTC&characterEncoding=UTF-8 driver: com.mysql.jdbc.Driver username: james password: 123456 type: com.alibaba.druid.pool.DruidDataSource mybatis: type-aliases-package: com.qfedu.pojo mapper-locations: classpath:mapper/*Mapper.xml
-
代码实现
- 新增⼀个User类
@Data public class User { private String uid; private String username; private String password; private String email; private String tel; private int level; private int integral; private int ifNew; }
- 新增⼀个Controller类
@RestController public class UserController { @Resource private IUserService userService; @GetMapping("/Users") public List<User> getAllUsers(){ return userService.getAllUsers(); } }
- 新增⼀个Service接口
public interface IUserService { List<User> getAllUsers(); }
- 新增该service接口的实现类
@Service public class UserServiceImpl implements IUserService { @Resource private IUserDao userDao; @Override public List<User> getAllUsers() { return userDao.getAllUsers(); } }
- 新增一个Dao接口
@Mapper public interface IUserDao { List<User> getAllUsers(); }
- 在resources下新增⼀个mapper目录,新增⼀个 UserMapper.xml 文件
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd"> <!-- 整个映射文件为 mapper 节点,里面包含 namespace 属性 --> <mapper namespace="com.qfedu.dao.IUserDao"> <select id="getAllUsers" resultType="user"> select user_id uid, user_name username, password , email, tel, level,integral, if_new ifNew from users </select> <select id="getUserByUid" resultType="users"> select * from users where uid = #{uid} </select> <update id="updateUsers"> update users set username = #{username}, password = #{password}, tel=#{tel}, addr=#{addr} where uid = #{uid} </update> <update id="deleteUserByUid"> delete from users where uid = #{uid} </update> <update id="saveUsers"> insert into users values(null, #{username}, #{password}, #{tel}, #{addr}) </update> <update id="deleteUsers"> delete from users where uid = #{uid} </update> </mapper>
看看数据库的表结构
看看表里的数据
看看运行结果:浏览器中访问http://localhost:8080/Users
到此为止,SpringBoot 整合 MyBatis 完成
八、SpringBoot 整合 JSP
-
基本的配置
- 修改 pom.xml 文件,添加新的依赖
<!-- 添加 servlet 依赖模块 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <scope>provided</scope> </dependency> <!-- 添加 jstl 标签库依赖模块 --> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> </dependency> <!--添加 tomcat 依赖模块.--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-tomcat</artifactId> <scope>provided</scope> </dependency> <!-- 使用 jsp 引擎,springboot 内置 tomcat 没有此依赖 --> <dependency> <groupId>org.apache.tomcat.embed</groupId> <artifactId>tomcat-embed-jasper</artifactId> <scope>provided</scope> </dependency>
-
修改yml文件: 新增 spring mvc 的前后缀
spring: mvc: view: prefix: /WEB-INF/jsp/ suffix: .jsp
-
代码实现
- 修改controller.java
@Controller public class UserController { @Resource private IUserService userService; @GetMapping("/Users") @ResponseBody public List<User> getAllUsers(){ return userService.getAllUsers(); } @GetMapping("/UsersPage") public String showUsers(Model model){ model.addAttribute("list", userService.getAllUsers()); return "users"; } }
-
修改pom文件的打包方式为war,在 main下新增目录webapp,以及WEB-INF目录,在WEB-INF下新增 JSP 目录,JSP 目录下新增 Users.jsp 文件
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>users</title> </head> <body> <h1>this is users jsp page</h1> <% out.println("hello"); %> <table border="0" width="80%" align="center"> <c:forEach items="${list}" var="u"> <tr> <td>${u.uid}</td> <td>${u.username}</td> <td>${u.password}</td> <td>${u.tel}</td> <td>${u.email}</td> <td>${u.level}</td> </tr> </c:forEach> </table> </body> </html>
- 访问地址:http://localhost:8080/UsersPage
- 至此 SpringBoot 整合 JSP 配置完成