1 SpringBoot简介
SpringBoot官网java
1.1.回顾什么是Spring
Spring是一个开源框架,2003 年兴起的一个轻量级的Java 开发框架,做者:Rod Johnson 。mysql
Spring是为了解决企业级应用开发的复杂性而建立的,简化开发。git
1.2.Spring是如何简化Java开发的
为了下降Java开发的复杂性,Spring采用了如下4种关键策略:web
一、基于POJO的轻量级和最小侵入性编程,全部东西都是bean;spring
二、经过IOC,依赖注入(DI)和面向接口实现松耦合;sql
三、基于切面(AOP)和惯例进行声明式编程;数据库
四、经过切面和模版减小样式代码,RedisTemplate,xxxTemplate;apache
1.3.什么是SpringBoot
Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员再也不须要定义样板化的配置。经过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。编程
Spring Boot的主要优势:api
- 为全部Spring开发者更快的入门
- 开箱即用,提供各类默认配置来简化项目配置
- 内嵌式容器简化Web项目
- 没有冗余代码生成和XML配置的要求
1.4.SpringBoot的核心功能
-
起步依赖
起步依赖的本质是一个Maven项目模型,定义对其余库的传递依赖,这些东西加在一块儿,完成指定某个功能
-
自动配置
自动配置是指程序启动的时候,Springboot考虑安全/集成/持久化/web等各方面因素,决定配置应该使用哪个,该过程有Spring自动完成
1.5 SpringBoot的优势
-
Create stand-alone Spring applications
-
- 建立独立Spring应用
-
Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
-
- 内嵌web服务器
-
Provide opinionated ‘starter’ dependencies to simplify your build configuration
-
- 自动starter依赖,简化构建配置
-
Automatically configure Spring and 3rd party libraries whenever possible
-
- 自动配置Spring以及第三方功能
-
Provide production-ready features such as metrics, health checks, and externalized configuration
-
- 提供生产级别的监控、健康检查及外部化配置
-
Absolutely no code generation and no requirement for XML configuration
-
- 无代码生成、无需编写XML
SpringBoot是简化Spring技术栈的快速开发脚手架
1.六、SpringBoot缺点
- 人称版本帝,迭代快,须要时刻关注变化
- 封装太深,内部原理复杂,不容易精通
2 SpringBoot快速入门
2.1代码实现
2.1.1 建立Maven工程
2.1.2 添加Maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
2.1.3 编写SpringBoot引导类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication//标注这是springboot引导类
public class MySpringBootApplacation {
public static void main(String[] args) {
SpringApplication.run(MySpringBootApplacation.class);
}
}
2.1.4 编写controller
@Controller
public class helloController {
@RequestMapping("/hello")
@ResponseBody
public String test(Model model){
model.addAttribute("msg","hello");
return "hello wee";
}
}
2.1.5 更改端口号
application.yaml
server:
port: 81
2.1.5 运行
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tWCQWK4x-1617005357317)(D:\学习\框架学习\SpringBoot\1.png)]
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Ghg1Ns48-1617005357334)(D:\学习\框架学习\SpringBoot\1616892058282.png)]
https://www.yuque.com/atguigu/springboot/na3pfd
https://gitee.com/leifengyang/springboot2
2.2 热部署设置
2.2.1导入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<optional>true</optional>
</dependency>
2.2.2IDEA中打开热部署
2.2.3Ctrl+Shift+Alt+/
如今就能够热部署了
3 yaml配置注入
3.1 yaml配置文件简介
yaml文件用于修改SpringBoot自动配置的默认值;SpringBoot在底层都给咱们自动配置好;
-
application.yml
语法结构 :key=value
好比咱们能够在配置文件中修改Tomcat 默认启动的端口号!测试一下!
server.port=8081
之前的配置文件,大多数都是使用xml来配置;好比一个简单的端口配置,咱们来对比下yaml和xml
传统xml配置:
<server>
<port>8081<port>
</server>
yaml配置:
server: prot: 8080
3.2 yaml文件语法形式
3.2.1 格式
#普通数据的配置
name: zhangsan
#对象的配置
person:
name: zhangsan #注意此处有空格
age: 18
addr: beijing
#行内对象的配置
person:{
name:zhangsan,age:18,addr:beijing}
说明:语法要求严格!
一、空格不能省略
二、以缩进来控制层级关系,只要是左边对齐的一列数据都是同一个层级的。
三、属性和值的大小写都是十分敏感的。
3.2.2 yaml文件配置配置数组和集合
name: hushaolin
person:
name: zhangsan
age: 18
addr: beijing
#数组
city:
- beijing #注意行首此处有空格
- tianjing
- shanghai
city1: [beijing,tianjing,chongqing,shanghai] #注意city:后面有空格
student:
- name:tom
age:18
- name:luck
age:21
student1: [{
name:tom,age:18},{
name:luck,age:25}]
#map配置
map:
key1: value1
key2: value2
server:
port: 81
3.2.3 配置文件与属性的映射
(1)经过@value映射
@Controller
public class Quick2Controller {
@Value("${name}")
private String name;
@RequestMapping("/quick2")
@ResponseBody
public String quick2(){
//得到配置文件信息
return "name:"+name;
}
}
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CdaxxB8v-1617005357364)(D:\学习\框架学习\SpringBoot\1616931903846.png)]
(2)经过@ConfigurationProperties映射
@Controller
@ConfigurationProperties(prefix = "person")//匹配前缀
public class Quick3Controller {
private String name;
private String addr;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAddr() {
return addr;
}
public void setAddr(String addr) {
this.addr = addr;
}
@RequestMapping("/quick3")
@ResponseBody
public String quick3(){
//得到配置文件信
System.out.println("name:"+name+"address:"+addr);
return "name:"+name+" address:"+addr;
}
}
4 SpringBoot集成Mybatis
4.1导入 MyBatis 所须要的依赖
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.1</version>
</dependency>
4.2导入数据库依赖
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
4.3 添加数据库链接信息
application.yml
#数据库链接信息
spring:
datasource:
username: root
password: 123456
#?serverTimezone=UTC解决时区的报错
url: jdbc:mysql://localhost:3306/springboot_mybatis?serverTimezone=UTC&useUnicode=true&characterEncoding=utf-8
driver-class-name: com.mysql.cj.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource
4.4 实体类
User.java
public class User {
private Integer id;
private String username;
private String password;
private String name;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
", name='" + name + '\'' +
'}';
}
}
4.5 接口
UserMapper.java
public interface UserMapper {
//查询全部用户
List<User> getUserList();
}
4.6映射文件
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="com.hsl.dao.UserMapper">
<select id="getUserList" resultType="com.hsl.pojo.User">
select * from mybatis.user
</select>
</mapper>
4.7 编写UserController类进行测试
import com.hsl.dao.UserMapper;
import com.hsl.pojo.User;
import org.apache.ibatis.annotations.Mapper;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import java.util.List;
@Controller
public class UserController {
@Autowired(required=false)
private UserMapper userMapper;
@RequestMapping("/query")
@ResponseBody
public List<User> queryUserList(){
return userMapper.getUserList();
}
}
参考资料: 尚硅谷SpringBoot2核心技术与响应式编程
B站视频:黑马Spring Boot(IDEA版)