SpringBoot创建
SpringBoot有两种创建方法,一种是在IDEA中创建,一种是在Spring官网创建,两种方法是一样的,但是需要联网。
SpringBoot项目快速启动
1.对SpringBoot项目打包(执行Maven构建指令package)
2.执行启动指令
java -jar springboot.jar
SpringBoot概述
- 起步依赖
pom中的starter-parent和starterweb帮助我们实现快速配置。
-
starter
- SpringBoot中常见项目名称,定义了当前项目使用的所有项目坐标,以达到减少依赖配置的目的
-
parent
-
所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(依赖管理,而非依赖),以达到减少依赖冲突的目的
-
spring-boot-starter-parent (2.5.0)与spring-boot-starter-parent (2.4.6)共计57处坐标版本不同
-
-
实际开发
- 使用任意坐标时,仅书写GAV中的G和A,V由SpringBoot提供如发生坐标错误,再指定version(要小心版本冲突)
将boot中的tomcat替换为jetty
使用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
SpringBoot配置文件
SpringBoot提供了多种属性配置方式,开发主要用yml
- application.properties
server.port=80
- application.yml
server:
port: 81
- application.yaml
server:
port: 82
SpringBoot配置文件加载顺序(了解):
application.properties >application.yml > application.yaml
SpringBoot核心配置文件名为application
SpringBoot内置属性过多,且所有属性集中在一起修改,在使用时,通过提示键+关键字修改属性
yaml
yaml语法规则
-
大小写敏感
-
属性层级关系使用多行描述,每行结尾使用冒号结束
-
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)- 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
-
表示注释
-
核心规则︰数据前面要加空格与冒号隔开
enterprise:
name : itcast
age: 16
tel: 4006184000
yaml数据读取
单个数据读取
- 使用@Value读取单个数据,属性名引用方式:${一级属性名.二级属性名....}
如果需要在配置文件中使用变量进行引用,可以通过${变量名}进行引用:
baseDir: /usr/ local/fire
center:
dataDir: ${baseDir}/data
tmpDir: ${baseDir}/tmp
logDir: ${baseDir}/log
msgDir: ${baseDir}/msgDir
属性值中如果出现转义字符,需要使用双引号包裹
lesson: "Spring\tboot\nlesson"
全部数据读取
如果需要一次性全部读取呢?则可以使用:
@Autowired
private Environment env;
- 封装全部数据到Environment对象
某个属性读取
自定义类型的属性要和配置文件名一一对应,比如name就是name,另外需要加入@ConfigurationProperties注解,此时如果在Controller调用就会直接读取到对应的数据。
多环境启动
多环境启动命令行
SpringBoot中4级配置文件
1级: file : config/application.yml 【最高】
2级: file : application.yml
3级: classpath: config/ application. yml
4级: classpath: application.yml【最低】
作用:
1级与2级留做系统打包后设置通用属性
3级与4级用于系统开发阶段设置通用属性
整合Junit
1.导入测试对应的starter
2.测试类使用@SpringBootTest修饰
3.使用自动装配的形式添加要测试的对象
@SpringBootTest
class Springboot07JunitApplicationTests{
@Autowired
private BookService bookService;
@Test
public void testSave(){
bookService.save();
}
}
SpringBootTest中的class属性,是用来设置JUnit加载的SpringBoot启动类,如果测试类和对应的类不在同一个包名下,那么需要手动在注解后面加入class属性告诉spring启动类在哪里,反之,如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的设置,也就是省略classes的设定。
@SpringBootTest(classes = Springboot05JunitApplication.class)
class Springboot07UnitApplicationTests{
}
整合mybatis
1.初始化的时候,选择当前模块需要使用的技术集(MyBatisFramework、MySQL驱动)
2.在yml文件中,设置数据源
spring:
datasource:
type: com.alibaba.druid.pool.DruidDataSource
driver-class-name: com.mysq1.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_dbuser
name: root
password: root
3.定义数据层接口与映射配置
@Mapper
public interface UserDao {
@select("select * from user")
public List<User> getA1l();
}
另外,在MySQL8版本中可能会出现要求设置时区,此时可以在上面的配置文件中加入?serverTimezone=UTC,即jdbc:mysql://localhost:3306/ssm_dbuser?serverTimezone=UTC
整合mybatis-plus
- 通过阿里云可以直接在勾选界面直接选中mybatis-plus,如果从官网中是无法选择mp的,此时可以通过pom手动添加。
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.2</version>
</dependency>
- 如果数据库表名和实体类不一致,例如数据库中是tbl_book,而实体类是book,此时需要在配置文件中加入mp配置:
mybatis-plus:
global-config:
db-config:
table-prefix:tbl_
- 在bookdao中extends下basemapper
加上@mapper注解
整合druid
- 导入依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
- 变更Druid的配置方式:
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTCuser
name: root
password: root
Springboot整合之前的ssm
-
pom. xml
配置起步依赖,必要的资源坐标( druid) -
application.yml
设置数据源、端口等 -
配置类
全部删除 -
dao
设置@Mapper -
测试类
-
页面
mp部分功能介绍
- 插入默认不适用雪花算法怎么修改为自增策略?
在application.yml中设置id-type属性:
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
id-type: auto
-
如何开启mp的日志?
同样在配置文件中修改:
mybatis-plus:
configuration:
log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
- 如何开启mp的分页功能?
3.1 添加mp分页拦截器,在config包下新建类
@Configuration
public class MybatisPlusConfig {
@Bean
public MybatisPlusInterceptor mybatisPlusInterceptor() {
MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();
interceptor.addInnerInterceptor(new PaginationInnerInterceptor());
return interceptor;
}
3.2 设定分页对象ipage
@Test
void testGetPage(){
IPage page = new Page(1,5);
bookDao. selectPage(page,null);
}
IPage对象中封装了分页操作中的所有数据
1. 数据
2. 当前页码值
3. 每页数据总量
4. 最大页码值
5. 数据总量
- 使用mp条件查询功能
- 使用QueryWrapper对象封装查询条件,推荐使用LambdaQueryWrapper对象,所有查询操作封装成方法调用
@Test
void testGetByCondition(){
IPage page = new Page(1,10);
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(Book::getName,"Spring");
bookDao.selectPage(page,lqw);
}
为什么不推荐querywapper?因为有可能在写参数名时出错,而使用上面的lambda表达式就可以完美避开出错可能。
@Test
void testGetByCondition(){
QueryWrapper<Book> qw = new QueryWrapper<Book>();
qw.like("name","Spring");
bookDao.selectList(qw);
}
上面的querywapper写法不推荐,同时支持动态条件查询,例如:
@Test
void testGetByCondition(){
String name = "Spring";
IPage page = new Page(1,10);
LambdaQueryWrapper<Book> lqw = new LambdaQueryWrapper<Book>();
lqw.like(Strings.isNotEmpty(name),Book::getName,"Spring");
bookDao.selectPage(page,lqw);
}
标签:精通,SpringBoot,boot,入门,name,application,Springboot,starter,属性
From: https://www.cnblogs.com/monsterwolf/p/16743578.html