springboot框架学习积累—基础之约定优于配置
1.预定优于配置
约定优于配置(Convention over Configuration)
是一种设计范式,又称为按约定编程,简单理解就是遵循约定
2. SpringBoot的概念
- Spring的优缺点
-
优点
:IOC,AOP -
缺点
:1. 配置文件比较重,十分繁琐。2. 项目jar包的依赖管理十分繁琐,首先要分析导入哪些库的坐标,然后要看之后导入的jar包和之前的jar包的依赖关系,对应选版本,考虑版本的兼容性
- SpringBoot解决了上述的问题
-
起步依赖
:本质是一个maven项目对象模型,定义了对其他库传递依赖(传递依赖 ---> 比如每个xxxstarter中有很多jar包,项目中还需要依赖xxxstarter,而且xxxstarter需要依赖一些其他的jar包,所以这个项目就依赖传递了这些jar包)
,这些东西加在一起即支持某项功能,简单的说起步依赖就是将具备某种功能的坐标打包在一起,并提供一些默认的功能(主要解决项目管理版本依赖发生冲突的问题)
-
自动装配
:1. 指得是Springoot会自动将一些配置类的bean注册进ioc容器
中,我们可以在需要的地方使用@Autowired
或@Resource
等注解来使用
2. 自动表现的形式就是我们只需引入我们想要功能的包,相关的配置不用我们管,Springboot会自动注入这些bean,我们直接使用即可
3.主要解决Spring配置繁琐的问题
3. Springboot项目主程序启动类位置
- Springboot项目主程序启动类会扫描当
前主程序所在的包及其子包
的内容(注解 … …)
4.Springboot单元测试编写例子
-
@SpringBootTest
标记该类是springboot的单元测试类,并加载项目的applicationContext上下文环境 @RunWith
证明是测试启动器,并且当前的环境处于spring的环境中,加载springboot的注解
@SpringBootTest
@RunWith(SpringRunner.class)
class Springboot01DemoApplicationTests {
@Autowired
private HelloController helloController;
@Test
void contextLoads() {
String demo = helloController.demo();
System.out.println(demo);
}
}
5.Springboot热部署
引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
idea
属性设置- 使用组合快捷键
Ctrl+Shift+Alt+/
(windows)或者command+shift+option+/
(mac)打开Maintenance
选择框,选择Registry
,将红色框的选项打钩即可
6.SpringBoot全局配置文件
application.properties
配置文件:里面可以定义SpringBoot项目的相关属性(系统属性,环境变量,命令参数也可以是自定义配置文件的名称和位置)
yaml
配置文件:1. YAML文件格式是SpringBoot支持的一种JSON超文件格式,相较于传统的Properties配置文件,YAML文件以数据为核心,是一种更为直观并且容易被电脑识别的数据序列化格式。
person:
# 普通数据类型
id: 2
name: lucy
# 数组或单列集合
hobby: [吃饭,睡觉,打豆豆]
family: [father,mother]
# map类型
map: {k1: v1,k2: v2}
# 实体对象类型
pet: {type: dog,name: 旺财}
7.配置文件的属性值注入
- 如果配置的是
SpringBoot
已有属性,那么SpringBoot
内部将会自动扫描并且读取配置文件中的属性并覆盖默认属性 - 如果是自定义属性,还必须要在程序中注入这些配置属性方可生效
- 使用
@ConfigurationProperties
注入属性
@Component
@ConfigurationProperties(prefix = "person")
public class Person {
private int id;
public void setId(int id) {
this.id = id;
}
}
- 使用
@Value
注入属性
@Component
public class Person {
//将配置文件的属性值注入到注解标记的属性中
@Value("${person.id}")
private int id;
}
8.自定义配置
@PropertySource
:该注解用于指定自定义配置文件的具体位置和名称@Configuration
:1. 使用该注解编写自定义配置类,SpringBoot
会自动扫描和识别配置类,从而替代Spring
框架中的XML
配置文件。2. 当定义一个配置类后,还需要在类的方法上使用@Bean
注解进行组件配置,将方法的返回对象注入到Spring
容器中,并且组件默认名称使用的是方法名,也可以使用注解属性value/name
自定义组件名称
//标明该类为配置类
@Configuration
public class MyConfig {
//将返回值对象作为组件添加到spring容器中,标识id默认是方法名
@Bean(name = "iservice")
public MyService myService() {
return new MyService();
}
}
@Autowired
private ApplicationContext applicationContext;
@Test
public void iocTest() {
System.out.println(applicationContext.containsBean("myService"));
}
9.随机数设置及参数间引用
-
随机数设置
:SpringBoot
内嵌RandomValuePropertySource
类,对于一些隐秘属性值,测试用例属性值进行随机注入 语法
:${random.xx} xx表示需要指定生成的随机数类型和范围,他可以随机生成整数,UUId,字符串参数间引用