Spring Boot spring.factories vs @Enable annotations

时间:2017-03-15 19:59:37

标签: spring-boot spring-cloud

我使用Spring Boot和Spring Cloud已经有一段时间了,而Spring核心已经使用了更长时间,但是在创建框架时我无法找到明确规定使用哪种技术:

  • Spring Boot starter + spring.factories file
  • Spring Boot starter + @EnableXxx
  • 两个

例如:

  • Eureka客户端启动器要求用户导入spring-cloud-starter-eureka-client并在某些配置类上添加@EnableEurekaClient
  • 另一方面,在类路径上添加spring-boot-starter-jdbc足以触发数据源自动配置。没有@EnableDataSourceAutoConfiguration
  • 这样的东西
  • 想要通过配置属性配置缓存的人还需要手动添加@EnableCaching

有时,@EnableXxx带注释的类包含在启动程序带来的代码中,有时则不包括在内。

我知道@Enable...是" pre Spring-Boot"方法(技术上看起来很好看@Import),但@EnableEurekaClient存在的事实证明它并没有被任何平均值所弃用。

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

1 个答案:

答案 0 :(得分:3)

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

Dave Syer说:

  

一个候选经验法则是“如果某些东西在类路径上,但是   提供多种功能,您需要一种方法来打开子集“   我更愿意将其视为“揭示有意识的选择”   而不是“依靠魔法”

我有点看作启动服务器或做工作(比如Discovery Client)