Spring 启动:确定哪些自动配置应用于球衣?

Spring Boot: Determining what autoconfiguration are applied to jersey?

按照将球衣添加到 Sring 靴子的在线文档,看来我只需要包含以下包

spring-boot-starter-jersey

实际上,它声明 Spring Boot 通过包含此包提供自动配置。

我在哪里可以找到到底发生了什么?

如果我不添加这个包,那么什么是未配置的?

我在google里找了包,没有具体的解释,只说是自动配置,配置什么?

我想知道更多幕后发生的事情。

我建议多了解一下 Spring Boot 如何工作以提供一般的自动配置。

spring 引导参考指南是一个很好的参考。 http://docs.spring.io/spring-boot/docs/1.5.3.RELEASE/reference/htmlsingle/#common-application-properties

您可以查看附录 A 中的常见应用程序属性,了解所有 spring 允许您立即配置的内容。

如果您在页面上搜索,参考指南还提供了高级内容 "spring-boot-starter-jersey"。

他们还有一些示例,您可以通过这些示例进行调试,如果您愿意的话,可以继续进行调试。

希望能给你一个学习的起点!

Spring Boot 支持的 all 的所有自动配置代码都在 spring-boot-autoconfigure 模块中。如果你仔细查看包裹,你会看到球衣包裹。

"starter"模块一般是没有任何代码的(当然除非是第三方模块)。它的工作原理是自动配置中的代码有一些注释 @ConditionalOnXxx,其中条件可以是来自 class 在 class 路径上的任何内容。如果此 class 不可用,则不会进行自动配置。这几乎就是添加 jersey starter 模块所做的全部工作:它 adds the jersey dependencies 以便应用自动配置器。

现在专门为 Jersey 自动配置的是什么?查看 JerseyAutoConfiguration 的来源。基本上你将看到的是你的 ResourceConfig 被注入到配置器中。从那个 ResourceConfig,它创建 Jersey 的 ServletContainer(这是 Jersey 的主要入口点。

然后,根据我们的属性配置,创建 FilterRegistrationBeanServletRegistrationBean 作为 Spring bean,包装 Jersey 的 ServletContainer。 Jersey 可以创建为 Servlet 或 Servlet Filter。我们配置哪个就用哪个。

这就是 Jersey 配置。 Spring 启动将从其他一些自动配置中获取一个 servlet 容器(例如 Tomcat、Jetty),然后获取 Filter/ServletRegistrationBean 并将 Servlet/Filter 添加到该 servlet 容器。

此外,并不是那么重要,但是自动配置也给了我们一些 Jackson 配置助手。例如,我们可以只配置一个 ObjectMapper Spring bean,而不是

这就是您所得到的。没有什么了不起的,你不能不依赖自动配置就 do it yourself