springboot目录结构
Java:存放代码
resources:
static:存放静态资源:js,css,图片,音频,视频
templates:模板文件:freemaker,thymeleaf,默认不支持jsp
application.properties:配置文件
springboot内置了tomcat,并且不需要打成war包再执行,可以在配置文件中对端口号等服务端信息进行配置。
springboot将各个应用和三方框架设置成了一个个场景starter,用哪个就引用哪个场景
spingboot会将web相关的依赖全部引入项目。
自动配置原理
@springApplication:springboot的主配置类,他是一个复合注解
@springBootConfigration:包含@Configration表示配置类代替配置文件,会自动注入spring容器
将自己写的包加入到扫描器当中。
@EnableAutoConfigration:ssm需要些很多配置文件,springBoot开启自动配置
自动配置可以找到主配置类的包名写到spring容器中(写到扫描器当中 )
springboot在启动时会根据spring.factories找到三方依赖并将这些包以来引入本项目
springautoconfigration jar包当中的spring.factories这里面配置了109个三方依赖
编写项目时一般会对自己写的代码以及三方依赖进行配置但是springboot会自动配置
1.自己写的包通过@springBootConfigration自动帮我们配置
2.三方依赖通过@EnableAutoConfigration 当中springautoconfigration jar包当中的spring.factories这里面配置了109个三方依赖
springautoconfigration jar包中包含了J2EE体系中需要的依赖
以其中一个为例看自动装配什么时候开启
@conditionalonxxx注解即描述了该配置类什么时候生效
每一个xxxautoconfigration中有很多@conditionalonxxx,当条件满足时则自配置类生效加入到spring容器中。也可以手动修改自动装配的属性。
通过观察源码发现这个类是一个配置类,并将该类注入spring容器中通过httpencodingproperties将编码默认设置成utf-8即自动装配编码为utf-8。那么如何修改默认值
通过配置文件将prefix值当中的charset改变默认值(prefix+属性名)
如何知道springboot自动装配了哪些类禁止了哪些类?
在全局配置文件当中加入debug=true