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,字符串
参数间引用