1212import org .springframework .context .annotation .Bean ;
1313import org .springframework .context .annotation .Configuration ;
1414import org .springframework .context .annotation .Import ;
15- import springfox .documentation .builders .ApiInfoBuilder ;
16- import springfox .documentation .builders .ParameterBuilder ;
17- import springfox .documentation .builders .PathSelectors ;
18- import springfox .documentation .builders .RequestHandlerSelectors ;
15+ import org .springframework .util .StringUtils ;
16+ import springfox .documentation .builders .*;
1917import springfox .documentation .schema .ModelRef ;
2018import springfox .documentation .service .ApiInfo ;
2119import springfox .documentation .service .Contact ;
2220import springfox .documentation .service .Parameter ;
21+ import springfox .documentation .service .ResponseMessage ;
2322import springfox .documentation .spi .DocumentationType ;
23+ import org .springframework .web .bind .annotation .RequestMethod ;
2424import springfox .documentation .spring .web .plugins .Docket ;
2525
2626import java .util .*;
@@ -82,21 +82,25 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
8282 excludePath .add (PathSelectors .ant (path ));
8383 }
8484
85- Docket docket = new Docket (DocumentationType .SWAGGER_2 )
85+ Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
8686 .host (swaggerProperties .getHost ())
8787 .apiInfo (apiInfo )
8888 .globalOperationParameters (buildGlobalOperationParametersFromSwaggerProperties (
89- swaggerProperties .getGlobalOperationParameters ()))
90- .select ()
89+ swaggerProperties .getGlobalOperationParameters ()));
90+
91+ // 全局响应消息
92+ if (!swaggerProperties .getApplyDefaultResponseMessages ()) {
93+ buildGlobalResponseMessage (swaggerProperties , docketForBuilder );
94+ }
95+
96+ Docket docket = docketForBuilder .select ()
9197 .apis (RequestHandlerSelectors .basePackage (swaggerProperties .getBasePackage ()))
9298 .paths (
9399 Predicates .and (
94100 Predicates .not (Predicates .or (excludePath )),
95101 Predicates .or (basePath )
96102 )
97- )
98- .build ();
99-
103+ ).build ();
100104 configurableBeanFactory .registerSingleton ("defaultDocket" , docket );
101105 docketList .add (docket );
102106 return docketList ;
@@ -138,12 +142,18 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
138142 excludePath .add (PathSelectors .ant (path ));
139143 }
140144
141- Docket docket = new Docket (DocumentationType .SWAGGER_2 )
145+ Docket docketForBuilder = new Docket (DocumentationType .SWAGGER_2 )
142146 .host (swaggerProperties .getHost ())
143147 .apiInfo (apiInfo )
144- .globalOperationParameters (assemblyGlobalOperationParameters (swaggerProperties .getGlobalOperationParameters (),
145- docketInfo .getGlobalOperationParameters ()))
146- .groupName (groupName )
148+ .globalOperationParameters (buildGlobalOperationParametersFromSwaggerProperties (
149+ swaggerProperties .getGlobalOperationParameters ()));
150+
151+ // 全局响应消息
152+ if (!swaggerProperties .getApplyDefaultResponseMessages ()) {
153+ buildGlobalResponseMessage (swaggerProperties , docketForBuilder );
154+ }
155+
156+ Docket docket = docketForBuilder .groupName (groupName )
147157 .select ()
148158 .apis (RequestHandlerSelectors .basePackage (docketInfo .getBasePackage ()))
149159 .paths (
@@ -160,11 +170,15 @@ public List<Docket> createRestApi(SwaggerProperties swaggerProperties) {
160170 return docketList ;
161171 }
162172
173+
174+
163175 @ Override
164176 public void setBeanFactory (BeanFactory beanFactory ) throws BeansException {
165177 this .beanFactory = beanFactory ;
166178 }
167179
180+
181+
168182 private List <Parameter > buildGlobalOperationParametersFromSwaggerProperties (
169183 List <SwaggerProperties .GlobalOperationParameter > globalOperationParameters ) {
170184 List <Parameter > parameters = Lists .newArrayList ();
@@ -216,4 +230,31 @@ private List<Parameter> assemblyGlobalOperationParameters(
216230 resultOperationParameters .addAll (docketOperationParameters );
217231 return buildGlobalOperationParametersFromSwaggerProperties (resultOperationParameters );
218232 }
233+
234+ /**
235+ * 设置全局响应消息
236+ *
237+ * @param swaggerProperties
238+ * @param docketForBuilder
239+ */
240+ private void buildGlobalResponseMessage (SwaggerProperties swaggerProperties , Docket docketForBuilder ) {
241+ List <ResponseMessage > responseMessages = new ArrayList ();
242+ List <SwaggerProperties .GlobalResponseMessage > globalResponseMessages =
243+ swaggerProperties .getGlobalResponseMessages ();
244+ for (SwaggerProperties .GlobalResponseMessage globalResponseMessage : globalResponseMessages ) {
245+ ResponseMessageBuilder responseMessageBuilder = new ResponseMessageBuilder ();
246+ responseMessageBuilder
247+ .code (globalResponseMessage .getCode ())
248+ .message (globalResponseMessage .getMessage ());
249+
250+ if (!StringUtils .isEmpty (globalResponseMessage .getModelRef ())) {
251+ responseMessageBuilder
252+ .responseModel (new ModelRef (globalResponseMessage .getModelRef ()));
253+ }
254+ responseMessages .add (responseMessageBuilder .build ());
255+ }
256+
257+ docketForBuilder .useDefaultResponseMessages (swaggerProperties .getApplyDefaultResponseMessages ())
258+ .globalResponseMessage (RequestMethod .GET ,responseMessages );
259+ }
219260}
0 commit comments