6262import org .slf4j .Logger ;
6363import org .slf4j .LoggerFactory ;
6464import org .springdoc .core .customizers .OpenApiBuilderCustomizer ;
65-
65+ import org . springdoc . core . customizers . ServerBaseUrlCustomizer ;
6666import org .springframework .beans .BeansException ;
6767import org .springframework .beans .factory .config .BeanDefinition ;
6868import org .springframework .boot .autoconfigure .AutoConfigurationPackages ;
@@ -120,6 +120,11 @@ public class OpenAPIService implements ApplicationContextAware {
120120 */
121121 private final Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ;
122122
123+ /**
124+ * The server base URL customisers.
125+ */
126+ private final Optional <List <ServerBaseUrlCustomizer >> serverBaseUrlCustomisers ;
127+
123128 /**
124129 * The Spring doc config properties.
125130 */
@@ -188,7 +193,8 @@ public class OpenAPIService implements ApplicationContextAware {
188193 */
189194 OpenAPIService (Optional <OpenAPI > openAPI , SecurityService securityParser ,
190195 SpringDocConfigProperties springDocConfigProperties , PropertyResolverUtils propertyResolverUtils ,
191- Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ) {
196+ Optional <List <OpenApiBuilderCustomizer >> openApiBuilderCustomisers ,
197+ Optional <List <ServerBaseUrlCustomizer >> serverBaseUrlCustomisers ) {
192198 if (openAPI .isPresent ()) {
193199 this .openAPI = openAPI .get ();
194200 if (this .openAPI .getComponents () == null )
@@ -202,6 +208,7 @@ public class OpenAPIService implements ApplicationContextAware {
202208 this .securityParser = securityParser ;
203209 this .springDocConfigProperties = springDocConfigProperties ;
204210 this .openApiBuilderCustomisers = openApiBuilderCustomisers ;
211+ this .serverBaseUrlCustomisers = serverBaseUrlCustomisers ;
205212 if (springDocConfigProperties .isUseFqn ())
206213 TypeNameResolver .std .setUseFqn (true );
207214 }
@@ -466,7 +473,15 @@ public Schema resolveProperties(Schema schema, Locale locale) {
466473 * @param serverBaseUrl the server base url
467474 */
468475 public void setServerBaseUrl (String serverBaseUrl ) {
469- this .serverBaseUrl = serverBaseUrl ;
476+ String customServerBaseUrl = serverBaseUrl ;
477+
478+ serverBaseUrlCustomisers .ifPresent (customisers -> {
479+ for (ServerBaseUrlCustomizer customiser : customisers ) {
480+ customServerBaseUrl = customiser .customise (customServerBaseUrl );
481+ }
482+ });
483+
484+ this .serverBaseUrl = customServerBaseUrl ;
470485 }
471486
472487 /**
@@ -810,8 +825,9 @@ public SecurityService getSecurityParser() {
810825
811826 /**
812827 * Gets server base URL
813- *
828+ *
814829 * @return the server base URL
830+ */
815831 public String getServerBaseUrl () {
816832 return serverBaseUrl ;
817833 }
@@ -820,4 +836,4 @@ public String getServerBaseUrl() {
820836 public void setApplicationContext (ApplicationContext applicationContext ) throws BeansException {
821837 this .context = applicationContext ;
822838 }
823- }
839+ }
0 commit comments