SpringBoot
@Conditional条件装配
@ImportResource配置导入
@ConfigurationProperties配置绑定
配置绑定和注入容器
@Component+@ConfigurationProperties 可以将配置文件中的配置绑定到对象类中的属性并注入容器
当我们引用的是第三方库 不能使用@componet注解的时候可以使用
@ConfigurationProperties+@EnableConfigurationProperties
自动配置
注解层级关系
@SpringBootApplication组合注解
- @SpringBootConfiguration
代表当前是一个配置类 - @ComponentScan
指定扫描那些包 - @EnableAutoConfiguration
- @AutoConfigurationPackage
自动配置包- @Import(AutoConfigurationPackages.Registrar.class)
利用Registrar给容器导入一系列组件
将指定的一个包下的所有组件导入
- @Import(AutoConfigurationPackages.Registrar.class)
- @Import
给容器导入一个组件- getAutoConfigurationEntry(annotationMetadata)
给容器中批量导入组件- List configurations = getCandidateConfigurations(annotationMetadata, attributes);
- SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass()
- Map<String, List> loadSpringFactories(@Nullable ClassLoader classLoader)
- classLoader.getResources(FACTORIES_RESOURCE_LOCATION)
默认扫描当前系统里面的META-INF/spring.factories位置的文件
- classLoader.getResources(FACTORIES_RESOURCE_LOCATION)
- Map<String, List> loadSpringFactories(@Nullable ClassLoader classLoader)
- SpringFactoriesLoader.loadFactoryNames(getSpringFactoriesLoaderFactoryClass()
- List configurations = getCandidateConfigurations(annotationMetadata, attributes);
- getAutoConfigurationEntry(annotationMetadata)
- @AutoConfigurationPackage
SpringBoot启动的时候加载了127个场景所需要的配置
但是最终会按照条件装配规则(判断有没有对应的类或包 )实现按需加载
默认会绑定配置文件指定的值 XXXproperties里的配置
定制化配置
- 直接用自己的@Bean替换底层的组件
- 通过在yml中设置配置修改配置
配置流程
xxxAutoConfiguration–>组件–>xxxProperties拿值—>application.yml
可通过配置debug=true 开启自动配置报告
自定义类绑定的配置提示
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
tips:打包的时候将这个依赖排除
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<configuration>
<excludes>
<exclude>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
</exclude>
</excludes>
</configuration>
</plugin>
</plugins>
</build>
web场景
设置静态资源的访问路径前缀
mvc:
static-path-pattern:
默认是 /** 可以自己修改添加
resources:
static-locations:
设置静态资源目录路径
使用设置静态资源目录路径要禁用访问路径前缀
mvc:
hiddenmethod:
filter:
enabled:
表单的请求只有put/get 设置配置为true将开开始表单的rest功能
@MatrixVariable获取矩阵变量的值
当cookie被禁用了Session无法获取值可以通过这个矩阵注解获取
cookie携带了JsessionId可以通过这个id获取Session中的值
SpringBoot默认禁用矩阵变量需要手动开启
拦截器
实现HandlerInterceptor接口
Profile
默认配置文件一直都会加载,可以指定加载配置文件