spring-boot - Spring Boot spring.factories 与 @Enable 注释

标签 spring-boot spring-cloud

我已经使用 Spring Boot 和 Spring Cloud 一段时间了,使用 Spring Core 的时间更长,但我找不到关于在创建框架时使用哪种技术的明确规则:

  • Spring Boot 启动器 + spring.factories文件
  • Spring Boot 启动器 + @EnableXxx
  • 两者

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

  • 有时 @EnableXxx annotated class 包含在 starter 带来的代码中,有时不包含。

    我知道 @Enable...是“pre Spring-Boot”方法(技术上是好看的 @Import ),但事实是 @EnableEurekaClient存在证明它没有以任何方式被弃用。

    那里有什么规定?我在文档中找不到它。

    最佳答案

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

    Dave Syer说过:

    A candidate rule of thumb is "if something is on the classpath but provides multiple features, you need a way to switch on a subset" I prefer to think of it as "revealing a conscious choice" as opposed to "relying on magic"



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

    关于spring-boot - Spring Boot spring.factories 与 @Enable 注释,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42819558/

    相关文章:

    maven - Spring Boot App 内嵌 Tomcat 如何在运行时加载外部 War 文件

    java - Spring Boot-摆脱Hikari数据源并使用H2

    java - 在将应用程序迁移到 Spring Boot 后使用 Spring Data Rest 时,我观察到带有 @Id 的实体属性不再编码为 JSON

    spring-mvc - spring cloud config-server .properties内容协商失败

    Spring Cloud kubernetes 未加载配置映射

    java - 如何使用 spring 集成通过 http header 动态传递值

    java - 使用 Jackson 和 Spring-Boot 将 Base64 编码的 JSON 解码为 POJO

    java - Spring Cloud 配置: define server config properties programmatically

    spring - 如何在不使用 Spring Boot 的情况下注入(inject) Feign 客户端并调用 REST 端点

    spring-security - Spring Cloud Netflix Zuul、CSRF 和表单提交