SpringBoot:
自动配置pom.xml文件:
spring-boot-dependencies:核心在父工程中,在引入一些springboot依赖的时候,不需要指定版本
springboot启动器依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
@Bean:把对象注入到spring容器中,相当于<bean>标签
@Bean(name="容器中的名称") 不指定默认是方法名字为id
@Value("${key}"): 获取值
主程序:
@SpringBootApplication:标注这个类是一个springboot的应用
复合注解:
@SpringBootConfiguration:作为配置文件使用,可以用@bean声明对象注入容器
@Configuration:spring的配置类
@Component:spring的组件
@EnableAutoConfiguration:启动自动配置
@AutoConfigurationPackage:自动配置包
@Import(AutoConfigurationPackages.Registrar.class):自动配置包注册
@ComponentScan:扫描器,找到注解 默认扫描所在的类的包和子包,所以要放同级目录
@Import(AutoConfigurationImportSelector.class):自动配置导入选择类
getAutoConfigurationEntry:获得自动配置的实体的方法
getCandidateConfigurations:获得候选的配置的方法
标注了EnableAutoConfiguration的注解的类
protected Class<?> getSpringFactoriesLoaderFactoryClass() {
return EnableAutoConfiguration.class;
}
获取所有的加载配置
public static List<String> loadFactoryNames(Class<?> factoryType, @Nullable ClassLoader classLoader) {
ClassLoader classLoaderToUse = classLoader;
if (classLoader == null) {
classLoaderToUse = SpringFactoriesLoader.class.getClassLoader();
}
String factoryTypeName = factoryType.getName();
return (List)loadSpringFactories(classLoaderToUse).getOrDefault(factoryTypeName, Collections.emptyList());
}
loadSpringFactories()方法
Enumeration urls = classLoader.getResources("META-INF/spring.factories");:获取配置
@ConditionalOnClass注解判断导入条件是否满足
@ConfigurationProperties(perfix = "变量名前缀"):可以在yaml配置文件中绑定实体类并在配置文件中赋值
@PropertySource(value = "application.yaml"):加载指定配置文件
Springboot注解的结论:
Springboot在启动的时候从spring-boot-autoconfigure-2.6.7.jar/METE-INF/spring.factories中获取EnableAutoConfiguration的值
将这些值作为自动配置类导入容器,满足条件后自动配置类就进行自动配置工作
Springboot应用启动的结论:
SpringApplication.run(Application.class, args):SpringApplication类
run方法
1.推断应用的类型是普通项目还是WEB项目
2.0查找并加载所有可用初始化器,设置到initializers属性中
3.找出所有的应用程序监听器,设置到listeners属性中
4.推断并设置main方法的定义类,找到运行的主类
Springboot自动装配的结论:
1.Springboot启动会加载大量自动配置类(xxxAutoConfigurartion类)
2.我们需要的组件功能要在springboot默认写好的自动配置类中
3.给容器中自动配置类添加组件时,会从xxxProperties类中获取属性,我们只需要在application配置文件中指定这些属性的值
Springboot配置文件application.properties(yaml):
JSR303校验:
@NotNull 注解元素必须是⾮空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否⼩于等于最⼤指定整数值
@Min 验证值是否⼤于等于最⼩指定整数值
@Pattern 验证字符串是否匹配指定的正则表达式
@Size 验证元素⼤⼩是否在指定范围内
@NotNull 注解元素必须是⾮空
@Null 注解元素必须是空
@Digits 验证数字构成是否合法
@Future 验证是否在当前系统时间之后
@Past 验证是否在当前系统时间之前
@Max 验证值是否⼩于等于最⼤指定整数值
@Min 验证值是否⼤于等于最⼩