准备知识:SPI(Service Provider Interface)
可参考另一篇博文
我使用spring.factories的场景一般如下:
在不改变原有Spring应用的前提条件下(比如增加新的扫描包路径,配置文件等等),想让Spring可以扫描到你新增加jar包中定义的Component,就需要在新增的jar包中使用spring.factories。
===具体使用========================================
定义@Configuration
@Configuration
@EntityScan(basePackages = "")
@EnableJpaRepositories("")
@ComponentScan(basePackages = "")
@PropertySource(value = {"classpath:/testa.properties"}, encoding = "utf-8")
public class MyConfiguration {
}
定义spring.factories
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.etoak.config.MyConfiguration
这样Spring Boot就可以扫描其包以外的Bean了。
====================================
spring.factories常见用法:
org.springframework.data.web.config.SpringDataJacksonModules=\
org.springframework.data.web.config.SpringDataJacksonConfiguration
org.springframework.boot.autoconfigure.EnableAutoConfiguration=org.springframework.cloud.stream.binder.rabbit.config.ExtendedBindingHandlerMappingsProviderConfiguration
org.springframework.boot.env.EnvironmentPostProcessor=\
org.springframework.cloud.stream.binder.kafka.KafkaBinderEnvironmentPostProcessor
org.springframework.data.repository.core.support.RepositoryFactorySupport=org.springframework.data.keyvalue.repository.support.KeyValueRepositoryFactory
org.springframework.integration.config.IntegrationConfigurationInitializer=\
org.springframework.integration.config.GlobalChannelInterceptorInitializer,\
org.springframework.integration.config.IntegrationConverterInitializer,\
org.springframework.integration.config.IdempotentReceiverAutoProxyCreatorInitializer,\
org.springframework.integration.dsl.context.DslIntegrationConfigurationInitializer