|
|
|
@ -1,7 +1,7 @@
|
|
|
|
|
package org.jeecg.handler.swagger; |
|
|
|
|
|
|
|
|
|
import org.springframework.beans.factory.annotation.Autowired; |
|
|
|
|
import org.springframework.context.ApplicationContext; |
|
|
|
|
import org.springframework.beans.factory.annotation.Value; |
|
|
|
|
import org.springframework.http.HttpStatus; |
|
|
|
|
import org.springframework.http.ResponseEntity; |
|
|
|
|
import org.springframework.web.bind.annotation.RequestMapping; |
|
|
|
@ -10,7 +10,6 @@ import springfox.documentation.swagger.web.*;
|
|
|
|
|
|
|
|
|
|
import java.util.ArrayList; |
|
|
|
|
import java.util.List; |
|
|
|
|
import java.util.regex.Pattern; |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* swagger聚合接口,三个接口都是 doc.html需要访问的接口 |
|
|
|
@ -21,11 +20,11 @@ import java.util.regex.Pattern;
|
|
|
|
|
@RequestMapping("/swagger-resources") |
|
|
|
|
public class SwaggerResourceController { |
|
|
|
|
private MySwaggerResourceProvider swaggerResourceProvider; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
private ApplicationContext applicationContext; |
|
|
|
|
// 生产环境profile配置模型
|
|
|
|
|
private static final String PRODUCTION_PROFILE_NAME = "prod*"; |
|
|
|
|
/** |
|
|
|
|
* 生产环境,关闭swagger文档 |
|
|
|
|
*/ |
|
|
|
|
@Value("${knife4j.production:#{null}}") |
|
|
|
|
private Boolean production; |
|
|
|
|
|
|
|
|
|
@Autowired |
|
|
|
|
public SwaggerResourceController(MySwaggerResourceProvider swaggerResourceProvider) { |
|
|
|
@ -44,22 +43,10 @@ public class SwaggerResourceController {
|
|
|
|
|
|
|
|
|
|
@RequestMapping |
|
|
|
|
public ResponseEntity<List<SwaggerResource>> swaggerResources() { |
|
|
|
|
// 如果激活的profile带有生产环境的profile,则屏蔽swagger资源
|
|
|
|
|
if (isProd()) { |
|
|
|
|
// 是否开启生产环境屏蔽swagger
|
|
|
|
|
if (production != null && production) { |
|
|
|
|
return new ResponseEntity<>(new ArrayList<>(), HttpStatus.OK); |
|
|
|
|
} |
|
|
|
|
return new ResponseEntity<>(swaggerResourceProvider.get(), HttpStatus.OK); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private boolean isProd() { |
|
|
|
|
String[] profiles = applicationContext.getEnvironment().getActiveProfiles(); |
|
|
|
|
Pattern pattern = Pattern.compile(PRODUCTION_PROFILE_NAME); |
|
|
|
|
for (String profile : profiles) { |
|
|
|
|
if (pattern.matcher(profile).find()) { |
|
|
|
|
return true; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
return false; |
|
|
|
|
} |
|
|
|
|
} |