Spring @Order 注释未按正确顺序加载

Vai*_* PS 0 java spring tomcat spring-boot

我正在使用 Spring Boot 嵌入式 tomcat。
在我的应用程序中,我有三个配置类,并且我使用@Order注释来控制类的加载顺序。当我在嵌入式 Tomcat 中运行应用程序时,它工作正常,但在独立 Tomcat (WAR) 中,它没有按正确的顺序加载。
我的课程如下:

@Order(1) public Class WebConfig 
@Order(2) public Class SwaggerConfig
@Order(3) public Class PlanoutConfig
Run Code Online (Sandbox Code Playgroud)

dav*_*xxx 8

@Order定义带注释的组件的排序顺序,而不是配置类的排序顺序。
\n我认为在嵌入式 Tomcat 模式下,您会受益于副作用。

\n\n

如果您的类是配置类,即带有 注释的类@Configuration,则Spring Boot 文档指出您应该优先@AutoconfigureOrder@Order

\n\n
\n

44.1 理解自动配置的bean

\n\n

如果您想要订购某些不应该\xe2\x80\x99 彼此有任何直接了解的自动配置,您也可以使用\n @AutoconfigureOrder。该注释与\n 常规注释具有相同的语义@Order注释具有相同的语义,但为自动配置类提供了专用的顺序。

\n
\n\n
\n\n

自动配置订单

\n\n
\n
public @interface AutoConfigureOrder\n
Run Code Online (Sandbox Code Playgroud)\n\n

Spring 框架的 Order\n 注释的自动配置特定变体。允许自动配置类在它们之间排序,而不影响传递给 AnnotationConfigApplicationContext.register(Class...) 的配置类的顺序。

\n
\n\n

你可以这样写:

\n\n
@AutoConfigureOrder(0) public Class WebConfig {...}\n@AutoConfigureOrder(1) public Class SwaggerConfig {...}\n@AutoConfigureOrder(2) public Class PlanoutConfig {...}\n
Run Code Online (Sandbox Code Playgroud)\n