0%

Springboot基础大全

一、简介

  • Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程
  • 特点:约定大于配置

二、快速创建Springboot web应用

三、自动配置原理

3.1 pom依赖

  • pom.xml文件的父依赖中有Springboot的所有依赖包
  • 所有我们在导入依赖包时不需要亲自指定包的版本就可以导入包了

3.2 启动器

  • 如spring-boot-start-web,他就会帮我们自动导入web环境所有的依赖
  • springboot会将所有的功能场景都变成一个个的启动器

四、yaml配置文件

4.1 基本配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
server:
port: 8080

spring:
datasource:
url: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

# jpa配置
jpa:
show-sql: true
properties:
hibernate:
format_sql: true
# Mybatis配置
mybatis:
# 配置XML映射文件中指定的实体类别名路径
type-aliases-package: com.example.demo3.pojo
# 配置MyBatis的xml配置文件路径
mapper-locations: classpath:mapper/*.xml
# 开启驼峰uName自动映射到u_name
map-underscore-to-camel-case: true

# 打印sql
logging:
level:
ssm.app.mapper : debug

4.2 属性注入

  • 使用yaml完成对对象的属性注入
1
2
3
4
5
6
7
8
9
10
11
# 与注解@ConfigurationProperties(prefix = "user")的user对应
user:
username: gaoyue
password: 123456
age: ${random.int} # 使用${}输入内置表达式
pets:
- cat
- dog
friends: {John: China, Mary: USA} # 注意:后必须有空格
dog:
name: ${user.username}_wancai #表达式和字符拼接注入
  • 注意需要导入以下依赖,否则报错:
1
2
3
4
5
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
  • pojo类使用注解@ConfigurationProperties绑定配置文件,prefix为配置文件中的根变量名
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
@Data
@Component
@ConfigurationProperties(prefix = "user") //这里的user对应配置文件的user
public class User {
private String username;
private String password;
private Integer age;
private List<String> pets;
private Map<String,Object> friends;
private Dog dog;
}

@Data
@Component
public class Dog {
private String name;
}

4.3 JSR303数据校验

  • 数据校验是yaml配置文件才有的,这也是它比properties强大的地方

  • 在对应类上加上注解@Validated,即可以对类中属性添加数据校验对应的注解,如果不满足数据校验的格式就会直接报错,包括以下几个:

注解 作用
@Null 限制对象只能为null
@NotNull 限制对象必须不为null
@AssertTrue 限制Boolean必须为true
@AssertFalse 限制Boolean必须为false
@Min(value) 验证Number和String对象是否大于等于指定的值
@Max(value) 验证Number和String对象是否小于等于指定的值
@DecimalMin(value) 验证Number和String对象是否大于等于指定的值,小数存在精度
@DecimalMax(value) 验证Number和String对象是否小于等于指定的值,小数存在精度
@Size(max,min) 验证对象(Array,Collection,Map,String)长度是否在给定的范围之内
@Digits 验证Number和String的构成是否合法
@Past 验证Date和Calendar对象是否在当前时间之前
@Future 验证Date和Calendar对象是否在当前时间之后
@Pattern(value) 限制String必须符合指定的正则表达式
@NotEmpty 验证注解的元素值不为null且不为空(字符串长度不为0、集合大小不为0)
@NotBlank 验证注解的元素值不为空(不为null、去除首位空格后长度为0),不同于@NotEmpty,只应用于字符串且在比较时会去除字符串的空格
@Email 验证注解的元素值是Email,也可以通过正则表达式和flag指定自定义的email格式

五、Web开发

5.1 静态资源分析

  • 静态资源一般保存在以下几个路径,优先级resources>public>static
    • webjars
    • resources/public
    • resources/resources
    • resources/static
    • /**
  • 以上的资源文件都可以通过“localhost:8080/文件名”访问到文件内容

5.2 Thymeleaf入门

  • 表达式:
    • ${expression}:取出后端传递的值
    • @{link url}:引用外部链接时,需把链接放到@{}中

5.3 拦截器

5.3.1 创建拦截器配置类

1
2
3
4
5
6
public class LoginInterceptor implements HandlerInterceptor {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
return false;
}
}

5.3.2 注入拦截器

1
2
3
4
5
6
7
8
public class WebConfig implements WebMvcConfigurer {
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LoginInterceptor())
.addPathPatterns("/**") // 拦截的路径
.excludePathPatterns("/","/index.html"); //放行的路径
}
}

六、连接数据库

6.1 yaml配置

1
2
3
4
5
6
spring:
datasource:
url: jdbc:mysql://localhost:3306/vue?useUnicode=true&characterEncoding=utf8&allowMultiQueries=true&serverTimezone=GMT%2B8&useSSL=false
username: root
password: 123456
driver-class-name: com.mysql.cj.jdbc.Driver

6.2、整合Mybatis

6.2.1 导入依赖包

  • 导入Mybatis Spring Boot Start依赖包
1
2
3
4
5
6
<!-- https://mvnrepository.com/artifact/org.mybatis.spring.boot/mybatis-spring-boot-starter -->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.2.2</version>
</dependency>
  • 版本要求:

6.2.2 环境搭建

  • @Mapper注解标注Mapper类
  • @Repository标注Dao层
  • 创建xxxMapper.xml编写sql
  • yaml配置xxxMapper.xml的文件路径:
1
2
3
4
5
6
7
8
# Mybatis配置
mybatis:
# 配置XML映射文件中指定的实体类别名路径
type-aliases-package: com.example.demo3.pojo
# 配置MyBatis的xml配置文件路径
mapper-locations: classpath:mapper/*.xml
# 开启驼峰uName自动映射到u_name
map-underscore-to-camel-case: true

七、认证与授权