自定义SpringBootCondition

17 9月

Spring Boot中一个很重要的特性就是自动配置,可以根据很多条件决定是否生成相应的bean或者其他操作。

大部分情况下自动配置的条件是ConditionalOnMissingBean,也就是没有这个bean,那就用这个自动配置配置一个。

有时候自动配置条件并不是那么直接,有时候还涉及到一些自己的逻辑,这个时候就可以自定义SpringBootCondition来处理复杂一些的情况。

继承SpringBootCondition并将自己的逻辑实现在getMatchOutcome方法中。

自定义的逻辑大部分有两种,第一种是自动配置针对一类情况,需要检测多个独立类的存在性,比如EmbeddedDatabaseCondition,就会自动检测所有可能的数据库驱动,包括H2,DERBY,HSQL

还有一种就是配置之间相互依赖,比如虽然提供了一个配置名为feature.enable,并且设置为true,但是相关的必要参数,比如feature.username没有提供,这种情况下自动配置并没有用处,不仅要不自动配置,还要提供有用的信息给用户,指出缺失的参数

 

发表评论

电子邮件地址不会被公开。