SpringBoot
1.基础回顾
SpringBoot的设计是为了极可能快的跑起来Spring应用程序并尽可能减少你的配置文件。
1.1约定优于配置
约定优于配置,又称安约定变成,是一种软件设计范式。
本质上说,系统、类库或框架应该假定合理的默认值,而非要求提供不必要的配置。例如模型中有一个名为user的类,那么数据库中对应的表就会默认命名为user。只有在偏离这一个约定的时候,例如想要将该表命名为person,才需要写这个名字的配置。
比如平时架构师搭建项目就是现实软件开发随便写代码,制定出一套规范,让开发人员按统一的要求惊醒开发编码测试,这样就嘉庆了开发效率与审查代码效率。
约定优于配置简单理解就是遵循约定。
1.2 SpringBoot概念
1.2.1 Spring优缺点分析
优点: spring是java企业版的轻量级代替品。通过依赖注入和面向切面编程,实现了代码解耦和方法动态增强。
缺点: 配置繁琐,项目的依赖管理耗时耗力。
1.2.2 SpringBoot解决上述spring问题
起步依赖: 起步依赖本质上是一个Maven项目对象模型,将具备某种功能的坐标打包到一起并提供一写默认功能。例如将原本项目依赖的多个jar提取到新的项目工程中,在原有项目中引入新的工程依赖即可。
自动配置: 管理bean只需要引入对应包,不需要在配置文件中进行相关的bean配置,SpringBoot会自动注入这些配置bean,我们在使用时用@Autowired或者@Resource等注解来即可。
优点: 简单、快速、方便的搭建项目;对主流开发框架的五配置集成;极大提高了开发、部署效率。
1.3 SpringBoot配置文件
1.3.1 配置文件之.properties
全局配置文件能对一些默认配置值进行修改。application.properties文件一般在resource目录下,spring boot项目启动时会自动加在application.properties文件。
我们可以在application.properties文件中定义spring boot的相关属性,这些属性包括系统属性、环境变量、命令参数等信息,也可以是自定义配置文件名称和位置。
# 例
server.port=8081
spring.datasource.driver-class-name=
spring.config.additional-lacation=
spring.config.location=
spring.config.name=application
1.3.2 配置文件之.yaml
YAML文件格式是SpringBoot支持的一种JSON超级文件格式,相较于传统的properties,yaml文件以数据为核心,是一种更直观且容易被电脑识别的数据序列化格式。
扩展名可以使用.yml或者.yaml;
yaml使用“key:(空格)value”的格式配置属性,缩进控制层级关系。
# 例
# 1.value值为普通数据类型
server:
port: 8081
path: /hello
# 2.value值为数组和单列集合
person:
hobby:
- play
- read
- sleep
person2:
hobby:
play,
read,
sleep
person3:
hobby: [play,read,sleep]
#value值为Map集合和对象
person4:
map:
k1: v1
k2: v2
person5:
map: {k1:v1,k2:v2}
1.3.3 配置文件属性的注入
使用SpringBoot全局配置文件设置属性时:
如果配置属性是spring boot已有属性,例如服务端口server.port,spring boot内部会自动扫描并读取这些配置文件中的属性值并覆盖默认属性。
如果配置的属性是用户自定义属性,如自定义的实体类属性,则必须在程序中注入这些配置属性才能生效。
Spring Boot支持多种注入配置文件属性的方式,例如使用注解@Configrationproperties和@Value注入属性
//使用@Configrationproperties注入属性
@Component
@ConfigurationProperties(prefix = "person") //将配置文件中以person开头的属性注入到该类中
public class Person {
private int id;
public void setid(int id) {
this.id = id;
}
}
//使用@Value注入属性
/** @Value注解是Spring框架提供的,用来读取配资后文件中属性值并逐个注入到bean对象的对应属性中,spring boot 框架从spring框架中对@Value注解进行了默认继承,所以在spring boot框架中还可以使用该注解读取和注入配置文件属性值
*/
@Component
public class Person{
@Value("${person.id}")
private int id;
@Value(12)
private int age;
}
1.3.4 自定义配置文件
- 使用@PropertySource加载配置文件
@Configurat //自定义配置类
@PropertySource("classpath:test.properties") //指定自定义配置文件位置和名称
@EenableConfigrationProperties(MyProperties.class) //开启对应配置类的属性注入功能
@ConfigrationProperties(prefix="test") //指定配置文件注入属性前缀
public class MyProperties {
private int id;
private String name;
}
- 使用@Configuration编写自定义配置类
public class MyService {
}
@Configuration //定义该类是一个配置类
public class MyConfig {
@Bean //将返回值对象作为组件添加到Spring容器中,组件id默认为方法名
public MyService myService() {
return new MyService()
}
}
1.3.5 随机值设置及参数间引用
- 随机值设置:
在spring boot配置文件中,随机值设置使用到了spring boot内嵌的RandomValuePropertySource类,对一些隐秘属性值或者测试用例属性值进行随机注入。
随机值设置的语法格式:${random.xx}
my.secret=${random.value} //配置随机值
my.number=${random.int} //配置随机整数
my.uuid=${random.uuid} //配置uuid类型数
my.number.less.than.ten=${random.int(10)} //配置小于10的随机整数
my.number.in.range=${random.int[1024,65536]} //配置范围在[1024,65536]之前的随机整数
- 参数间的引用
在spring boot配置文件中,配置文件的性质还可以惊醒参数间的引用,例如在最后一个配置的属性中直接引用先前已经定义过的属性,这样可以直接解析其中的属性值了。
优点在于当多个具有相关关联的配置属性中,只需要对其中一处属性预先配置,其他地方都可以引用,减少了维护时多处修改的麻烦。
参数间引用的语法格式为${xx},xx表示之前在配置文件中已经配置过的属性名。
app.name=Myapp
app.description=${app.name} is a Spring Boot application