项目目录解释

springBoot-3.springBoot执行原理
1.java:java源码
2.resource
static:静态资源(js css 图片 视频 音频)
templates:模版文件(模版引擎 freemarker,thymeleaf;默认不支持jsp)
application.properties: 配置文件

3.springboot将应用/三方框架,设置成一个个“场景”(starter),选择某个场景,就会将所有依赖自动注入。
例如,选择web,将会将web相关依赖(tomcat,json等)注入项目。

@配置说明

[email protected]:springBoot的主配置类

[email protected]:包含@Configuration,标识“配置类“

配置类含义:

  1. 该类是个配置类
  2. 会自动注入到spring容器中

1.2 @EnableAutoConfiguration

使springBoot可以自动配置(约定优于配置)
编写项目时,一般需要对自己写的代码和三方依赖进行配置,但是springboot 可以进行自动配置;
spring自动配置:自动将包及子包纳入spring容器,不再需要手动配置;

1.2.1 自己写的代码自动引入
@AutoConfigurationPackage - @Import(AutoConfigurationPackages.Registrar.class)
springBoot-3.springBoot执行原理
new PackageImport(metadata).getPackageName() 的值是包名 com.lyc.HelloWorld
获取到包名后,自动引入

1.2.2 三方jar包自动引入
@Import(AutoConfigurationImportSelector.class) - selectImports - getCandidateConfigurations - loadFactoryNames - loadSpringFactories - FACTORIES_RESOURCE_LOCATION - META-INF/spring.factories
springBoot-3.springBoot执行原理

总结
1.自己写的代码 通过@AutoConfigurationPackage 自动配置
2.三方依赖 通过 spring-boot-autoconfigure-2.1.6.RELEASE.jar 中的META-INF/spring.factories声明,然后通过@EnableAutoConfiguration开启使用;
spring-boot-autoconfigure-2.1.6.RELEASE.jar包中 包含了J2EE整个体系中需要的依赖;

spring boot 自动装配

1.spring-boot-autoconfigure-2.1.6.RELEASE.jar 中 META-INF/spring.factories文件中的配置并不会全部自动引入,需要满足条件:
每一个XXXAutoConfiguration,有很多@ConditionalOnXXX,当条件都满足时,则配置自动装配生效

Conditional条件列表:
springBoot-3.springBoot执行原理
2.可以手动修改自动装配:XXXProperties文件中的prefix.属性名=value(如spring.http.encoding.charset=ISO-8859-1)
springBoot-3.springBoot执行原理
3.全局配置中的key:来源于某个properties文件中的 prefix + 属性名
4.如何知道spring boot 开启/禁用了哪些自动装配?

  1. 在application.properties文件中配置 debug=true
  2. 运行项目后,会在console打印两个列表:Positive matches(开启的列表),Negative matches(未开启列表)
    springBoot-3.springBoot执行原理
    springBoot-3.springBoot执行原理

相关文章: