2017-03-15 52 views
1

我一直在使用Spring Boot和Spring Cloud一段时间,而Spring的内核时间更长,但我无法找到一个明确的规则来创建框架时使用哪种技术:Spring Boot spring.factories vs @Enable annotations

  • 春天引导启动+ spring.factories文件
  • 春天引导启动+ @EnableXxx

例如:

  • 尤里卡客户端启动需要用户导入spring-cloud-starter-eureka-client并就一些配置类
  • 在另一方面增加@EnableEurekaClient,在类路径中添加spring-boot-starter-jdbc足以触发数据源自动配置。还有是谁愿意通过配置属性来配置缓存也需要补充@EnableDataSourceAutoConfiguration
  • 有人没有这样的事情@EnableCaching手动

有时@EnableXxx注释类包含在由起动器带来的代码,有时没有。

我知道@Enable...是“前春启动”方法(技术上好看@Import),但@EnableEurekaClient存在的事实证明,它不通过任何手段过时。

那里的规则是什么?我无法在文档中找到它。

回答

3

没有硬性规定(至少从Spring Cloud的角度来看)。

Dave Syer说:

拇指的候选规则是“如果事情是在classpath但 提供了多种功能,您需要一种方法来在一个子集切换” 我更愿意把它看作是“揭示有意识的选择” ,而不是“靠魔力”

我有种看作为启动服务器或做功(如发现客户端)

+1

另一个因素是,如果有什么被带入做一件事或多件事。添加spring-boot-starter-data-jpa,并自动应用@EnableJpaRepositories,因为这是该模块的功能。然而,Spring的缓存可以从Spring框架中引入,而不需要有人抓住一些启动器,因此它必须通过选择来激活。说实话,我认为像尤里卡客户这样一个范围很窄的起步者会自我激活。 – gregturn