spring-boot

Get Started

  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息
  2. 选择当前模块需要使用的技术集
  3. 开发控制器类
@RestController
@RequestMapping("/books")
public class BookController{
	@GetMapping("/{id}")
	public String getById(@PathVariable Integer id){
		System.out.println("id =="id);
		return "hello,spring boot!"
	}
}
  1. 运行自动生成的Application类

最简SpringBoot程序所包含的基础文件

注意:

基于idea开发Spring Boot程序需要确保联网且能够加载到程序框架结构


SpringBoot项目快速启动

  1. 对SpringBoot项目打包(执行Maven:构建指令package)
  2. 执行启动指令
java -jar springboot.jar

注意事项

jar支持命令行启动需要依赖maven插件支持,打包时要确认是否具有SpringBoot对应的maven插件

<build>
	<plugins>
		<plugin>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-maven-plugin</artifactId>
		</plugin>
	</plugins>
</build>

Introduction

SpringBoot概述

SpringBoot是由Pivotal团队提供的全新框架,其设计目的是用来简化Spring应用的初始搭建以及开发过程



Spring程序缺点

SpringBoot程序优点


SpringBoot起步依赖

starter

parent

实际开发


SpringBoot程序启动

启动方式

@SpringBootApplication
public class Springboote1QuickstartApplication {
	public static void main(String[] args){
		SpringApplication.run(Springboot01QuickstartApplication.class,args);
	}
}

SpringBoot在创建项目时,采用jar的打包方式

SpringBoot的引导类是项目的入口,运行main方法就可以启动项目

使用maven依赖管理变更起步依赖项

<dependencies>
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-web</artifactId>
<!--web起步依赖环境中,排除Tomcat,起步依赖-->
		<exclusions>
			<exclusion>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-starter-tomcat</artifactId>
			</exclusion>
		</exclusions>
	</dependency>
	<!--添加jetty起步依赖,版本由SpringBoot的starter控制-->
	<dependency>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-jetty</artifactId>
	</dependency>
</dependencies>

Jetty比Tomcat更轻量级,可扩展性更强(相较于Tomcat),谷歌应用引擎(GAE)已经全面切换为Jetty

Config

format

配置格式

http://localhost:8080/books/1
                  ||
                  ||
http://localhost/books/1

SpringBoot提供了多种属性配置方式

server.port=80
server:
	port: 81
server:
	port: 82

springBoot配置文件加载顺优先级

注意事项

SpringBoot核心配置文件名为application
SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性

通常采用YAML文件.yml扩展名,即application.yml来配置


YAML数据读取方式

  1. 使用@Value读取单个数据,属性名引用方式:$
@RestController
@RequestMapping("/books")
public class BookController{

	@Value("${lesson}")
	private String lessonName;

	@Value("${server.port}")
	private int port;

	@Value("${enterprise.subject[1]}")
	private String[] subject_01;
}
  1. 封装全部数据到Environment对象
@RestController
@RequestMapping("/books")
public class BookController{
	@Autowired
	private Environment env;
	@GetMapping("/{id}")
	public String getById(@PathVariable Integer id){
		System.out.println(env.getProperty("lesson"));
		System.out.println(env.getproperty("enterprise.name"));
		System.out.println(env.getProperty("enterprise.subject[]"));
		return "hello spring boot!";
	}
}
  1. 自定义对象封装指定数据

封装

@Component
@ConfigurationProperties(prefix = "enterprise")
public class Enterprise {
	private String name;
	private Integer age;
	private String[] subject;
}

使用

@RestController
@RequestMapping("/books")
public class BookController{
	@Autowired
	private Enterprise enterprise;
}

自定义对象封装数据警告解决方案

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-configuration-processor</artifactId>
	<optional>true</optional>
</dependency>

Profile

YAML多环境启动

# 过时格式
spring:
	profiles:
		active: pro
---
spring:
	profiles: pro
	
	server:
		port: 80		
---
spring:
	profiles: dev
	
server:
	port: 81
---
spring:
	profiles: test
	
server:
	port: 82

# 推荐格式
spring:
	profiles:
		active: pro
---
server:
	port: 80
	
spring:
	config:
		activate:
			on-profile: pro

properties文件多环境启动


带参数启动SpringBoot

java -jar springboot.jar --spring.profiles.active=test
java -jar springboot.jar --server.port=88
java -jar springboot.jar --server.port=88 --spring.profiles.active=test

参数加载优先级顺序参见Spring官网的描述


Category

配置文件分类

SpringBoot中4级配置文件

作用:

Integration

JUnit

整合JUnit
SpringBoot整合JUnit

@SpringBootTest
class Springboot_JunitApplicationTests{ //默认和自己项目名相同
	@Autowired
	private BookService bookService;
	@Test
	public void testSave(){
		bookService.save();
	}
}

名称:@SpringBootTest
类型:测试类注解
位置:测试类定义上方
作用:设置JUnit加载的SpringBoot启动类
范例:

@SpringBootTest(classes Springboot_JunitApplication.class)
class Springboot07JunitApplicationTests {
}

相关属性

注意事项
如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定

SSM

基于SpringBoot实现SSM整合


  1. 创建新模块,选择Spring初始化,并配置模块相关基础信息
  2. 选择当前模块需要使用的技术集(MyBatis、MySQL)
  3. 设置数据源参数
spring:
	datasource:
		type: com.alibaba.druid.pool.DruidDataSource
		driver-class-name: com.mysql.cj.jdbc.Driver
		url: jdbc:mysq1://localhost:3306/ssm_db
		username: root
		password: root

注意事项
SpringBoot版本低于2.4.3(不含),Mysql驱动版本大于8.0时,需要在ur1连接串中配置时区

jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC

或在MySQL数据库端配置时区解决此问题

  1. 定义数据层接口与映射配置
@Mapper
public interface UserDao{
	@Select("select * from user")
	public List<User>getAll();
}
  1. 测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot_MybatisApplicationTests{
	@Autowired
	private BookDao bookDao;
	@Test
	public void testGetById(){
		Bookbook bookDao.getById(1);
		System.out.println(book);
	}
}

Case

基于SpringBoot的SSM整合案例

  1. pom.xml

配置起步依赖,必要的资源坐标(druid)

  1. application.yml

设置数据源、端口等

  1. 配置类

全部删除

  1. dao

设置@Mapper

  1. 测试类
  2. 页面

放置在resources目录下的static目录中