项目目录解释
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,标识“配置类“
配置类含义:
- 该类是个配置类
- 会自动注入到spring容器中
1.2 @EnableAutoConfiguration
使springBoot可以自动配置(约定优于配置)
编写项目时,一般需要对自己写的代码和三方依赖进行配置,但是springboot 可以进行自动配置;
spring自动配置:自动将包及子包纳入spring容器,不再需要手动配置;
1.2.1 自己写的代码自动引入
@AutoConfigurationPackage - @Import(AutoConfigurationPackages.Registrar.class)
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
总结:
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条件列表:
2.可以手动修改自动装配:XXXProperties文件中的prefix.属性名=value(如spring.http.encoding.charset=ISO-8859-1)
3.全局配置中的key:来源于某个properties文件中的 prefix + 属性名
4.如何知道spring boot 开启/禁用了哪些自动装配?
- 在application.properties文件中配置 debug=true
- 运行项目后,会在console打印两个列表:Positive matches(开启的列表),Negative matches(未开启列表)