SpringBoot基础入门
Spring Boot是由Pivotal团队提供的一套开源框架,可以简化spring应用的创建及部署。它提供了丰富的Spring模块化支持,可以帮助开发者更轻松快捷地构建出企业级应用。Spring Boot通过自动配置功能,降低了复杂性,同时支持基于JVM的多种开源框架,可以缩短开发时间,使开发更加简单和高效。(SpringBoot简化开发,可以快速部署SSM项目,整合了很多个配置,使用的时候只需要加上 Jar 包和对应的配置注解即可实现配置,Springboot内置了Tomcat)
1. 构建SpringBoot项目
这里使用的IDEA编辑器,每个编辑器的构建方式可能有些不同,但是大致相同,使用别的编辑器的同学可以拿这篇文章作为参考
方式一:使用官网构建
使用官网页面,直接下载springboot项目,使用流程如下
方式二:使用IDEA构建
在IDEA中点击new project 创建新项目,然后根据需求构建项目
注意:
使用此方法构建的SpringBoot和方式一构建的方式不同点在于一个是下载了一个压缩包文件,一个是直接在IDEA开发工具中下载,区别不大
方式三:自己配置
自己配置SpringBoot对于新手来说不太友好,要求对Jar包的熟悉程度比较高,个人不太推荐,大佬忽略,这里没有具体的配置方式
配置方式:
使用IDEA工具构建一个新的Maven工程,然后在POM文件中添加SpringBoot的相关依赖,自己创建Application启动类和配置文件
注意:
Mybatis-Plus不可以直接勾选Jar包进行依赖引入,需要我们自己去官网选择版本引入
目录结构
2. SpringBoot核心配置
SpringBoot有两种配置文件结尾,application.properties
application.yml
yml 是一种 yaml 格式的配置文件,主要采用一定的空格、换行等格式排版进行配置。
yaml 是一种直观的能够被计算机识别的的数据序列化格式,容易被人类阅读,yaml 类似于 xml,但是语法比 xml 简洁很多,值与前面的冒号配置项必须要有一个空格, yml 后缀也可以使用 yaml 后缀。
注意:
SpringBoot项目的配置文件必须使用
application
名称,否则不识别
1. SpringBoot基本配置
# SpringBoot的核心配置文件
server:
port: 8080 # 指定项目运行的端口
servlet:
context-path: / # 指定项目的运行路径
encoding:
charset: utf-8 # 指定项目的编码集
spring:
profiles:
active: dev # 多环境下使用的环境是哪个,不写就默认 application
2. 多环境配置
在实际开发的过程中,我们的项目会经历很多的阶段(开发->测试->上线),每个阶段的配置也会不 同,例如:端口、上下文根、数据库等,那么这个时候为了方便在不同的环境之间切换,SpringBoot 提供了多环境配置
为每个环境创建一个配置文件,命名必须以 application-环境标识.properties|yml
例如:
application-dev.yml
application-test.yml
3. 自定义配置
SpringBoot 的核心配置文件中,除了使用内置的配置项之外,我们还可以在自定义配置,然后采用注解去读取配置的属性值
如:
在application.yml配置文件中
有如下配置
school:
name: 清华大学
address: 北京
那么我们就可以在项目中使用
@Value("${school.name}") // 注入属性
private String schoolName;
3. SpringBoot事务管理
Spring Boot 使用事务非常简单,底层依然采用的是 Spring 本身提供的事务管理
在入口类中使用注解 @EnableTransactionManagement 开启事务支持
在访问数据库的 Service 方法上添加注解 @Transactional 即可
4. SpringBoot整合mybatisPlus、thymeleaf、druid、redis、Dubbo配置
# SpringBoot的核心配置文件
server:
port: 8080 # 指定项目运行的端口
servlet:
context-path: / # 指定项目的运行路径
encoding:
charset: UTF-8 # 指定项目的编码集
enabled: true # 开启为 true
force: true # 强制使用
# Spring 配置
spring:
application:
name: demo # spring项目名称
profiles:
active: dev # 使用的环境是哪个
thymeleaf:
cache: false # thymeleaf 不使用缓存
datasource: # 数据库连接配置
driver-class-name: com.mysql.cj.jdbc.Driver
username: root
password: 123456
url: jdbc:mysql://localhost:3306/ssm
type: com.alibaba.druid.pool.DruidDataSource # 使用的数据库连接池需要导入 jar 包 druid-spring-boot-starter
druid: # 可以不配置,有默认值
initial-size: 5 # 初始化连接数
min-idle: 5 # 最小连接数
max-active: 20 # 最大连接数
max-wait: 60000 # 获取数据库连接最大等待时间 单位毫秒
time-between-eviction-runs-millis: 60000 # 配置多久进行一次检测,检测需要关闭的空闲连接 单位毫秒
redis: # redis 配置
host: localhost
port: 6379
# password: # redis密码,没有注释掉
# mybatis-plus 配置
mybatis-plus:
mapper-locations: classpath*:/mapper/**/*.xml # 默认值,扫描mapper.xml文件
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl # 日志输出
global-config:
db-config:
logic-delete-field: isDelete # 逻辑删除 需要加一个注解 @TableLogic
logic-not-delete-value: 0 # 未删除逻辑值
logic-delete-value: 1 # 已经删除逻辑值
# Dubbo服务提供者
#dubbo:
# application:
# name: provide
# registry:
# address: zookeeper://localhost:2181
# scan:
# base-packages: com.dyf # 这里配置Dubbo的注解所在包,扫描的是接口实现类
# Dubbo消费者
#dubbo:
# application:
# name: cosumer
# registry:
# address: zookeeper://localhost:2181
# scan:
# base-packages: com.dyf # 这里配置Dubbo的注解所在包,扫描的是controller
5. SpringBoot整合MybatisPlus分页插件配置类
@Configuration
public class MyBatisPlusConfig {
/**
* 新的分页插件,一缓和二缓遵循mybatis的规则,需要设置 MybatisConfiguration#useDeprecatedExecutor = false 避免缓存出现问题(该属性会在旧插件移除后一同移除)
*/
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
// 这里需要指定数据库类型 这里使用的Mysql
interceptor.addInnerInterceptor(new PaginationInnerInterceptor(DbType.MYSQL));
return interceptor;
}
}
6. 整合所需要的 jar 包
导入SpringBoot 父类项目
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.7.11</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
导入所需要的 Jar 包
<dependencies>
<!--redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--springboot Web包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--springBoot 测试包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--Druid 数据库连接池包-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.16</version>
</dependency>
<!--mybatisPlus包-->
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.3.1</version>
</dependency>
<!--redis Jar包-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--Dubbo Jar包-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>2.7.8</version>
</dependency>
<!--zookeep包,注册中心,整合Dubbo时候使用-->
<dependency>
<groupId>org.apache.dubbo</groupId>
<artifactId>dubbo-dependencies-zookeeper</artifactId>
<version>2.7.8</version>
<type>pom</type>
<!--取消引入这两个日志框架,若引入控制台会报错,Jar重复引入-->
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-reload4j</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>