SpringBoot
一、介绍
我们在搭建传统SSM项目时,通常需要导入很多依赖,但每种依赖又有许多版本,这就很容易出现依赖冲突。此外,繁琐的配置也是一大痛点,太多了,让人很难记住,因此SpringBoot诞生了。
SpringBoot是对Spring的深度封装,基于约定优于配置的思想,提供了大量的默认配置和实现。能够让我们更加便捷的开发Spring应用,底层还是Spring的技术。使用SpringBoot之后,程序员只需按照它规定的方式去进行程序代码的开发即可,而无需再去编写一堆复杂的配置。
- 版本锁定: 继承了 spring-boot-starter-parent 父工程,它内部已经锁定了一些常见依赖的版本号,故而在我们自己开发的工程中无需再指定依赖的版本。 - 起步依赖:SpringBoot根据场景将各种依赖组装成了一个个的集合(starter),我们根据功能引入指定的starter即可。 - 默认配置:SpringBoot的约定大于配置,即SpringBoot的大量配置都有默认值,如果我们不去写配置就使用默认的。 比如说:tomcat默认端口 8080 等等 - 内置Tomcat:SpringBoot内置了一个tomcat,使用它开发的程序无需再进行tomcat部署,可直接运行
二、SpringBoot的配置文件
SpringBoot的配置文件类型有以下三种:properties,yaml,yml。
SpringBoot是基于约定的,很多配置都有默认值,但也允许自定义配置,具体做法是在resources下创建配置文件:application.yaml 或者 application.yml 或者 application.properties 目前版本中, SpringBoot启动时会依次加载顺序:properties > yml > yaml
我们今天讲一下yml类型的配置文件:1.语法
2.数据格式
3.读取配置
方法一(@Value 在bean中直接读取):
@Value("${name}") //普通键值对
private String name;
@Value("${user.username}") //对象属性
private String username;
@Value("${user.addressList[1]}") //数组或集合
private String address;
方法二(@ConfigurationProperties:把配置绑定到一个bean上,要求配置文件中的二级属性名跟实体的属性名相同):
@ConfigurationProperties(prefix = "user") //prefix的值为对象名
@Component
public class User {
//实体类的属性名需要和配置文件的属性名保持一致
private String username;
private String password;
private List<String> addressList;
三.多环境配置
在实际开发中,会有很多的环境:开发环境、测试环境、生产环境,其中的配置可能不一致 SpringBoot支持通过配置文件的命名规则来实现多环境配置
环境切换:
-
IDEA
-
命令行
项目打jar包
pom.xml 加入配置myboot org.springframework.boot spring-boot-maven-plugin repackage -
命令行指定运行参数:
指定使用test环境
java –jar springboot.jar --spring.profiles.active=test
指定使用test环境,端口号为9090
java –jar springboot.jar --spring.profiles.active=test --server.port=9090
四、常用功能
- 日志功能:
Spring支持多种日志级别,通过配置文件,可以输出指定级别的日志
打印日志:
@RestController
@Slf4j //lombok.extern.slf4j.Slf4j 用于记录日志
public class IndexController {
@GetMapping("/log")
public String log(){
log.debug("debug日志");
log.info("info日志");
log.warn("warn日志");
log.error("error日志");
return "success";
}
- 单元测试:
1.使用单元测试之前需导入依赖:
2.测试类编写:
测试类位置: 必须在启动类所在包或子包下
测试类标记注解:@SpringBootTest
@SpringBootTest //表示当前类是一个SpringBoot测试类,位置必须在引导类所在包或者子包下。如果不在引导类的包下,则必须增加一个属性
//@SpringBootTest(classes = QuickStartApplication.class) //如果不在引导类的包下,则必须增加一个属性,手动指定引导类的Class对象
public class UserTest {
@Autowired
private User user;
@Test //现在是Junit5 org.junit.jupiter.api.Test;
public void testUser(){
System.out.println(user);
}
}
- 静态资源访问:
目录:src/main/resources/static
访问(实际访问时不需要写static目录):