spring boot启动加载外部配置文件 springboot配置文件加载不全?
注意不要把springboot的配置搞错了,不管有没有这个包,都可以 没有它就不会有负担。
在Spring boot架构中,每个源程序还需要添加一个import语句来引入其他需要包含的包。
如果你把它放在一个分类项目中,它可以 不能被识别。只有放在资源项中才能识别。
该错误消息意味着没有活动的概要文件,所以只需打开配置并选择配置。
Springboot核心注释@EnableAutoConfiguration会导入@Import(),它实现了DeferredImportSelector接口,即可以在spring完成beans初始化后回调接口的selectImports方法。该方法的参数是每个bean的类属性和注释,返回的bean将被导入spring。自动配置importselector实现逻辑如下:
这个方法的逻辑大致是在每个jar包下加载spring.factories配置文件,读出自动配置的类,然后去掉重复的和需要排除的,然后过滤,也就是filter方法。该方法如下:
关注第一个for循环,getAutoConfigurationImportFilter()将返回Autoconfiguration ImportFilters的所有实现类。目前只有OnClass实现了这个接口,即返回OnClass的所有对象。OnClassCondition继承springBootCondition,match会根据条件过滤掉不合格的配置类,留下合格的配置类,由auto configuration import selector注入Spring完成加载。在这里,让我们 让我们讨论一下match方法如何处理ConditionOnClass的注释,并看看实现。其中实现了getOutcomes方法,其中使用createOutcomesResolver方法创建了两个OutcomesResolver。应该注意的是,一半的解析任务被留在一个新的线程中,以获得更好的性能。在这里,我们主要看一下StandardOutcomesResolver的实现以及相应的实现方法:
你可以看到阅读上面的类ConditionalOnClass批注的值,然后将其与环境进行匹配。如果存在,则返回ConditionOutcome对象,如果存在,则返回null。经过这些过滤,最终由上述的auto configuration import selector类返回,并由spring加载,从而实现条件注释的配置功能。
另外,@configuration类将在ConfigurationClassPostProcessor中处理,一些其他类型的@Condition条件判断,比如OnJavaCondition注释,将在这里处理,所以我赢了 这里不再赘述。
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。