1 2 3 4 5 6
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency>
|
自动装配原理
依赖
pom.xml的核心依赖在parent中,其中我们的许多的核心依赖都在其中
1 2 3 4 5 6
| <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.6.7</version> <relativePath/> </parent>
|
我们在引入的springboot依赖的适合,不需要写入版本
而在springboot中我们需要使用哪一种功能只需要引入哪一种start即可
主程序
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
| package com.zss.springbootdemo;
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication public class SpringBootdemoApplication {
public static void main(String[] args) { SpringApplication.run(SpringBootdemoApplication.class, args); }
}
|
我们进入到其中,查看他的注解形式
1
| @SpringBootConfiguration
|
当我们进入到@SpringBootConfiguration中时候可以发现其中的一个配置类@Configuration,这是表明我们spring的一个配置类
1
| @EnableAutoConfiguration
|
而对于@EnableAutoConfiguration,是自动导入配置的,当我们呢进入到其中,@AutoConfigurationPackage自动配置包的注解,而当我们再一次深入探究,@Import({AutoConfigurationImportSelector.class})导入选择器,
所以所springboot的所有自动配置都是在启动的时候进行了配置和加载,但是不一定生效,而是判断是否导入了相关的启动器。
SpringBoot配置文件
springboot的全局配置文件,配置名称是固定的,
application.properties–语法:key=value
application.yml–语法: key value
注意此时yml文件可以存储对象,虽然properties也可以存储对象,当时方法比较麻烦,当然也可以存储数组,对空格的要求非常高
对实体类进行赋值
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
| @Component @ConfigurationProperties(prefix = "student") public class Student { private String name; public Integer age;
public Student() { }
public Student(String name, Integer age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
@Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
|
1 2 3
| student: name: zss age: 20
|
使用properties进行赋值
1 2 3 4 5 6
| @Component
@PropertySource(value = "classpath:zss.properties") public class Student { private String name; public Integer age;
|
进行数据校验
我们在这里进行数据校验的时候,可以直接在后台判断结果是否合法
导入依赖
1 2 3 4
| <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-validation</artifactId> </dependency>
|
选择进行校验的属性
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| package com.zss.springbootdemo.pojo;
import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.stereotype.Component; import org.springframework.validation.annotation.Validated;
import javax.validation.constraints.Email;
@Component @ConfigurationProperties(prefix = "student") @Validated public class Student { @Email(message = "邮箱格式错误") private String name; public Integer age;
public Student() { }
public Student(String name, Integer age) { this.name = name; this.age = age; }
public String getName() { return name; }
public void setName(String name) { this.name = name; }
public Integer getAge() { return age; }
public void setAge(Integer age) { this.age = age; }
@Override public String toString() { return "Student{" + "name='" + name + '\'' + ", age=" + age + '}'; } }
|
配置的顺序
SpringBoot配置文件——加载顺序 - CyberPelican - 博客园 (cnblogs.com)
如果在不同的目录中存在多个配置文件,它的读取顺序是:
1、config/application.properties(项目根目录中config目录下)
2、config/application.yml
3、application.properties(项目根目录下)
4、application.yml
5、resources/config/application.properties(项目resources目录中config目录下)
6、resources/config/application.yml
7、resources/application.properties(项目的resources目录下)
8、resources/application.yml
在实际的开发应用中,我们拥有许多的环节,比如测试环境,生产环境等,我们可以在这里进行指定
springboot的多环境配置
1 2 3 4
| spring: profiles: active: test
|