SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化 Spring应用的初始搭建以及开发过程。
1.创建新模块,选择Spring Initializr,并配置模块相关基础信息
2.选择当前模块需要使用的技术集
3.开发控制器
@RestController
@RequestMapping("/books")
public class BookController {
@GetMapping
public String getById(){
System.out.println("Springboot is running....");
return "Springboot is running....";
}
}
最简SpringBoot程序所包含的基础文件:
<?xml version="1.0" encoding="UTF-8"?>
://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">
>4.0.0 >
>
>org.springframework.boot >
>spring-boot-starter-parent >
>2.7.10 >
>
<!-- lookup parent from repository -->
com.itheima
springboot_01-01_quickstart
0.0.1-SNAPSHOT
springboot_01-01_quickstart
springboot_01-01_quickstart
1.8
org.springframework.boot
spring-boot-starter-web
>
>org.springframework.boot >
>spring-boot-starter-test >
>test >
>
>
>
>
>
>org.springframework.boot >
>spring-boot-maven-plugin >
>
>
>
>
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
注意: 基于idea开发SpringBoot程序需要确保联网且能够加载到程序框架结构
1.进入SpringBoot官网找到Spring Initializr
2.进入创建页面,创建工程,并保存项目,解压项目,通过IDE导入项目。
之前https://start.spring.io/很容易网速慢,通过阿里云来提升速度
1.手动导入坐标
<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.0modelVersion>
<parent>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-parentartifactId>
<version>2.5.4version>
parent>
<groupId>com.itheimagroupId>
<artifactId>springboot_01_03_quickstartartifactId>
<version>1.0-SNAPSHOTversion>
<dependencies>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
dependency>
dependencies>
project>
2.手工创建引导类
package com.itheima;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
tips:隐藏文件,避免页面杂乱
Setting → File Types → Ignored Files and Folders
输入要隐藏的文件名,支持*号通配符
回车确认添加
parent元素是一种Maven的继承机制,用于指定项目的父级依赖。它提供了一个基础配置,包括默认的插件、依赖和配置信息。子项目可以通过继承父项目的pom.xml文件来使用相同的配置和依赖项,从而减少了代码冗余和重复配置的工作量(仅定义未使用)。
使用Spring Boot的parent元素可以让我们更方便地使用Spring Boot提供的各种功能和依赖库,同时避免多个依赖使用相同技术时出现依赖版本冲突。
继承parent的形式也可以采用引入依赖(spring-boot-dependencies)的形式实现效果
starter是一种依赖库,它提供了一组预配置的依赖项和默认设置,以满足特定的需求。这些starters通常包含了常见的依赖项(例如Spring框架核心、数据库驱动程序、Web容器等),并为它们提供了默认的配置信息,以帮助我们快速地开始项目开发。
使用Spring Boot的starter可以简化项目配置和管理,避免许多麻烦和复杂性,并提高开发效率和生产力。例如,如果我们要创建一个基于Web的Spring Boot应用程序,可以使用Spring Boot Web Starter来获取所需的所有依赖项和默认配置,从而减少了许多手动配置的工作量。
实际开发
SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目,但是未启动web服务器
SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean。
@SpringBootApplication
public class Springboot01QuickstartApplication {
public static void main(String[] args) {
SpringApplication.run(Springboot01QuickstartApplication.class, args);
}
}
内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给Spring容器管理。
变更内嵌服务器思想是去除现有服务器,添加全新的服务器
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-webartifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-tomcatartifactId>
exclusion>
exclusions>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-jettyartifactId>
dependency>
SpringBoot(官方文档)默认配置文件application.properties,通过键值对配置对应属性。
修改服务器端口:server.port=80
关闭运行日志图标:spring.main.banner-mode=off
SpringBoot配置文件加载顺序:
解决配置文件自动提示消失
1.Setting → Project Structure → Facets,选中对应项目/工程
2.Customize Spring Boot
3.选择配置文件
YAML(YAML Ain’t Markup Language),一种数据序列化格式
字面值表示方式
boolean: TRUE #TRUE,true,True,FALSE,false,False均可
float: 3.14 #6.8523015e+5 #支持科学计数法
int: 123 #0b1010_0111_0100_1010_1110 #支持二进制、八进制、十六进制
null: ~ #使用~表示null
string: HelloWorld #字符串可以直接书写
string2: "Hello World" #可以使用双引号包裹特殊字符
date: 2018-02-17 #日期必须使用yyyy-MM-dd格式
datetime: 2018-02-17T15:02:31+08:00 #时间和日期之间使用T连接,最后使用+代表时区
数组表示方式: 在属性名书写位置的下方使用减号作为数据开始符号,每行书写一个数据,减号与数据间空格分隔
subject:
- Java
- 前端
- 大数据
enterprise:
name: itcast
age: 16
subject:
- Java
- 前端
- 大数据
likes: [王者荣耀,刺激战场] #数组书写缩略格式
users: #对象数组格式
- name: Tom
age: 4
- name: Jerry
age: 5
users: #对象数组格式二
-
name: Tom
age: 4
-
name: Jerry
age: 5 #对象数组缩略格式
users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]
1.使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名……}
2.在配置文件中可以使用属性名引用方式引用属性,避免数据都需要修改
# 使用%{属性名}引用数据
daseDir: c\windows
tempDir: ${daseDir}\temp
3.属性值中如果出现转移字符,需要使用双引号包裹
# 转义字符,用双引号包起来
tempDir1: "${daseDir}\temp \t1 \t2"
#dir1:c\windows emp 1 2
4.封装yaml中的全部数据到Environment对象
//使用自动装配将所有的数据封装到一个对象Environment中
@Autowired
private Environment env;
# 创建类,用于封装性下面的数据
# 由spring加载数据到对象中,一定要告诉spring加载这组信息
# 使用时候从spring中直接获取信息使用
datasource:
driver: com.mysql.jdbc.Driver
url: jdbc:mysql://172.16.36.214:3306/r_framework?useUnicode=true&characterEncoding=UTF-8&zeroDateTimeBehavior=convertToNull&serverTimezone=Asia/Shanghai&useSSL=false
username: yushui
password: Yushui.123
//1.定义数据模型(实体类)对yaml文件中对应的数据
//2.定义为spring管控的bean
@Component
//3.指定加载的数据
@ConfigurationProperties(prefix = "datasource")
public class MyDataSource {
//属性名与名称一致
private String driver;
private String url;
private String username;
private String password;
....
}
Spring Initializr默认整合Junit
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-testartifactId>
<scope>testscope>
dependency>
测试类:
//设置JUnit加载的SpringBoot启动类
@SpringBootTest(classes = Application.class)
class ApplicationTests {
//使用自动装配的形式添加要测试的对象
@Autowired
private UserService userService;
@Test
void contextLoads() { }
}
测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类。
1.创建新模块,选择Spring初始化,并配置模块相关基础信息
选择当前模块需要使用的技术集(MyBatis、MySQL)
2.设置数据源参数
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: root
3.定义数据层接口与映射配置
@Mapper
public interface UserDao {
@Select("select * from user")
public List<User> getAll();
}
4.测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot08MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
public void testGetById() {
Book book = bookDao.getById(1);
System.out.println(book);
}
}
注意:
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在url连接串中配置时区
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
或在MySQL数据库端配置时区解决此问题:
MySQL的安装目录my.ini文件且打开它,找到 mysqld,在该下面添加 default-time_zone = ‘+8:00’,然后保存。
导入坐标:由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
<dependency>
<groupId>org.mybatis.spring.bootgroupId>
<artifactId>mybatis-spring-boot-starterartifactId>
<version>2.2.2version>
dependency>
2.定义数据层接口与映射配置,继承BaseMapper
@Mapper
public interface UserDao extends BaseMapper<User> {
}
3.其他同SpringBoot整合MyBatis
1.导入Druid对应的starter
<dependency>
<groupId>com.alibabagroupId>
<artifactId>druid-spring-boot-starterartifactId>
<version>1.2.6version>
dependency>
2.变更Druid的配置方式
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
整合任意第三方技术