springboot框架学习积累—基础之约定优于配置

1.预定优于配置

约定优于配置(Convention over Configuration)是一种设计范式,又称为按约定编程,简单理解就是遵循约定

2. SpringBoot的概念

  1. Spring的优缺点
  1. 优点:IOC,AOP
  2. 缺点1. 配置文件比较重,十分繁琐。2. 项目jar包的依赖管理十分繁琐,首先要分析导入哪些库的坐标,然后要看之后导入的jar包和之前的jar包的依赖关系,对应选版本,考虑版本的兼容性
  1. SpringBoot解决了上述的问题
  1. 起步依赖:本质是一个maven项目对象模型,定义了对其他库传递依赖(传递依赖 ---> 比如每个xxxstarter中有很多jar包,项目中还需要依赖xxxstarter,而且xxxstarter需要依赖一些其他的jar包,所以这个项目就依赖传递了这些jar包),这些东西加在一起即支持某项功能,简单的说起步依赖就是将具备某种功能的坐标打包在一起,并提供一些默认的功能(主要解决项目管理版本依赖发生冲突的问题)
  2. 自动装配1. 指得是Springoot会自动将一些配置类的bean注册进ioc容器中,我们可以在需要的地方使用@Autowired@Resource等注解来使用
    2. 自动表现的形式就是我们只需引入我们想要功能的包,相关的配置不用我们管,Springboot会自动注入这些bean,我们直接使用即可
    3.主要解决Spring配置繁琐的问题

3. Springboot项目主程序启动类位置

  1. Springboot项目主程序启动类会扫描当前主程序所在的包及其子包的内容(注解 … …)

4.Springboot单元测试编写例子

  1. @SpringBootTest标记该类是springboot的单元测试类,并加载项目的applicationContext上下文环境
  2. @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热部署

  1. 引入依赖
<dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-devtools</artifactId>
</dependency>
  1. idea属性设置
  2. 使用组合快捷键Ctrl+Shift+Alt+/(windows)或者command+shift+option+/(mac)打开Maintenance选择框,选择Registry,将红色框的选项打钩即可

6.SpringBoot全局配置文件

  1. application.properties配置文件:里面可以定义SpringBoot项目的相关属性(系统属性,环境变量,命令参数也可以是自定义配置文件的名称和位置)
  2. 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.配置文件的属性值注入

  1. 如果配置的是SpringBoot已有属性,那么SpringBoot内部将会自动扫描并且读取配置文件中的属性并覆盖默认属性
  2. 如果是自定义属性,还必须要在程序中注入这些配置属性方可生效
  3. 使用@ConfigurationProperties注入属性
@Component
	@ConfigurationProperties(prefix = "person")
	public class Person {
		private int id; 
	
	public void setId(int id) {
		this.id = id;
	 	}
	 }
  1. 使用@Value注入属性
@Component
public class Person {

	//将配置文件的属性值注入到注解标记的属性中
	@Value("${person.id}")
	private int id; 
}

8.自定义配置

  1. @PropertySource:该注解用于指定自定义配置文件的具体位置和名称
  2. @Configuration1. 使用该注解编写自定义配置类,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.随机数设置及参数间引用

  1. 随机数设置SpringBoot内嵌RandomValuePropertySource类,对于一些隐秘属性值,测试用例属性值进行随机注入
  2. 语法${random.xx} xx表示需要指定生成的随机数类型和范围,他可以随机生成整数,UUId,字符串
  3. 参数间引用