springboot笔记-配置文件内容

首先配置都是自动装配的,所以所有东西都是人家封装好的,用就得了

1.每个springboor项目都有这个:

package com.hang.springboot02config;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
public class Springboot02ConfigApplication {
    public static void main(String[] args) {
        SpringApplication.run(Springboot02ConfigApplication.class, args);
    }
}

2.然后注解@SpringBootApplication中能找到配置源码位置,即:


@SpringBootApplication
	--@EnableAutoConfiguration:自动导入配置       @Import(AutoConfigurationImportSelector.class):选择导入
 
		--getAutoConfigurationEntry:自动获取一个候选配置    getCandidateConfigurations:获取一个候选配置

			--getBeanClassLoader());       getSpringFactoriesLoaderFactoryC

				--return EnableAutoConfiguration.class;     loadFactoryNames:加载一些配置

					--Enumeration<URL> urls=classLoader.getResources(FACTORIES_RESOURCE_LOCATION);

						--public static final String FACTORIES_RESOURCE_LOCATION = "META-INF/spring.factories":最后找到配置文件的地方
	

这里面:

springboot笔记-配置文件内容_第1张图片

3.配置文件中的内容有哪些?

自动装配原理: xxxxconfiguration就是容器中的一个组件 加到容器中自动配置

					Conditional:
					adj. 有条件的,有前提的;(从句)条件的
					n. 条件从句;条件式

XxxxProperties.java中SpringBoot封装好的配置信息:


//说明这是配置类    XxxxxxProperties中找到能配置的东西和yaml中的一一绑定
@Configuration(proxyBeanMethods=false)
//自动配置属性 指定配置的类
@EnableConfigurationProperties(ServerProperties.class)
//spring的底层注解,根据不同的条件判断当前配置或者类是否能生效,就是能不能使用
//这个判断是不是web应用使用的
@ConditionalOnWebApplication(type=ConditionalOnWebApplication.Type.SERVLET)
//字符编码过滤器
@ConditionalOnClass(CharacterEncodingFilter.class)
@ConditionalOnProperty(prefix="server.servlet.encoding",value="enabled",matchIfMissing=true)
publicclassHttpEncodingAutoConfiguration{
privatefinalEncodingproperties;
publicHttpEncodingAutoConfiguration(ServerPropertiesproperties){
this.properties=properties.getServlet().getEncoding();
}
@Bean

!!如果开头注释那没有配置信息就往下找当前的内部类,反正一定能找到

4. 配置原理

  • springboot启动会加载大量的自动配置类
  • 使用的时候在springboot他写好的配置找那些功能代码
  • 用他的配置能自动装配,没有的得自己手动配置
  • 在容器中就是yaml中的配置添加组件的时候,自动从properties中获取这些配置
  • 自动装配 封装好的属性

5.看有哪些配置生效?

在yaml中添加

debug=true

运行可以在控制台看到用到的自动配置生效

  • Positive matches:(自动配置类启用的:正匹配)
  • Negative matches:(没有启动,没有匹配成功的自动配置类:负匹配)
  • Unconditional classes: (没有条件的类)

你可能感兴趣的:(Springboot,spring,spring,boot,java)