mirror of
https://gitee.com/log4j/pig.git
synced 2024-12-23 05:00:23 +08:00
✨ Introducing new features. gateway swagger + doc view
This commit is contained in:
parent
3084c85541
commit
6515f86c48
@ -15,7 +15,7 @@
|
|||||||
- 提供 lambda 、stream api 、webflux 的生产实践
|
- 提供 lambda 、stream api 、webflux 的生产实践
|
||||||
|
|
||||||
|
|
||||||
<a href="http://pig4cloud.com/doc/pig" target="_blank">部署文档</a> | <a target="_blank" href="https://avuejs.com"> 前端解决方案</a> | <a target="_blank" href="https://gitee.com/log4j/pig/releases/v1.3.2"> 1.0 版本</a> | <a target="_blank" href="http://pigx.pig4cloud.com"> PigX在线体验</a>
|
<a href="http://pig4cloud.com/doc/pig" target="_blank">部署文档</a> | <a target="_blank" href="https://avuejs.com"> 前端解决方案</a> | <a target="_blank" href="https://gitee.com/log4j/pig/releases/v1.3.2"> 1.0 版本</a> | <a target="_blank" href="http://pigx.pig4cloud.com"> PigX在线体验</a> | <a target="_blank" href="https://pig4cloud.com/images/20190918.pdf"> PigX白皮书</a>
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
50
pig-common/pig-common-swagger/pom.xml
Normal file
50
pig-common/pig-common-swagger/pom.xml
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~
|
||||||
|
~ Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
~
|
||||||
|
~ Redistribution and use in source and binary forms, with or without
|
||||||
|
~ modification, are permitted provided that the following conditions are met:
|
||||||
|
~
|
||||||
|
~ Redistributions of source code must retain the above copyright notice,
|
||||||
|
~ this list of conditions and the following disclaimer.
|
||||||
|
~ Redistributions in binary form must reproduce the above copyright
|
||||||
|
~ notice, this list of conditions and the following disclaimer in the
|
||||||
|
~ documentation and/or other materials provided with the distribution.
|
||||||
|
~ Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
~ contributors may be used to endorse or promote products derived from
|
||||||
|
~ this software without specific prior written permission.
|
||||||
|
~ Author: lengleng (wangiegie@gmail.com)
|
||||||
|
~
|
||||||
|
-->
|
||||||
|
|
||||||
|
<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0"
|
||||||
|
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
|
||||||
|
<modelVersion>4.0.0</modelVersion>
|
||||||
|
<parent>
|
||||||
|
<groupId>com.pig4cloud</groupId>
|
||||||
|
<artifactId>pig-common</artifactId>
|
||||||
|
<version>2.5.2.snapshot</version>
|
||||||
|
</parent>
|
||||||
|
|
||||||
|
<artifactId>pig-common-swagger</artifactId>
|
||||||
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
|
<description>pig 接口文档</description>
|
||||||
|
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<!--swagger 依赖-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger2</artifactId>
|
||||||
|
<version>${swagger.fox.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<!--knife4j是为Java MVC框架集成Swagger生成Api文档的增强-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.github.xiaoymin</groupId>
|
||||||
|
<artifactId>knife4j-micro-spring-boot-starter</artifactId>
|
||||||
|
<version>${knife4j.version}</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
|
</project>
|
@ -0,0 +1,36 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.pig4cloud.pigx.common.swagger.annotation;
|
||||||
|
|
||||||
|
import com.pig4cloud.pigx.common.swagger.config.SwaggerAutoConfiguration;
|
||||||
|
import org.springframework.context.annotation.Import;
|
||||||
|
|
||||||
|
import java.lang.annotation.*;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* @date 2018/7/21
|
||||||
|
* 开启pig swagger
|
||||||
|
*/
|
||||||
|
@Target({ElementType.TYPE})
|
||||||
|
@Retention(RetentionPolicy.RUNTIME)
|
||||||
|
@Documented
|
||||||
|
@Inherited
|
||||||
|
@Import({SwaggerAutoConfiguration.class})
|
||||||
|
public @interface EnablePigSwagger2 {
|
||||||
|
}
|
@ -0,0 +1,140 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
package com.pig4cloud.pigx.common.swagger.config;
|
||||||
|
|
||||||
|
|
||||||
|
import com.google.common.base.Predicate;
|
||||||
|
import com.google.common.base.Predicates;
|
||||||
|
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnMissingBean;
|
||||||
|
import org.springframework.boot.autoconfigure.condition.ConditionalOnProperty;
|
||||||
|
import org.springframework.context.annotation.Bean;
|
||||||
|
import org.springframework.context.annotation.Configuration;
|
||||||
|
import springfox.documentation.builders.ApiInfoBuilder;
|
||||||
|
import springfox.documentation.builders.PathSelectors;
|
||||||
|
import springfox.documentation.builders.RequestHandlerSelectors;
|
||||||
|
import springfox.documentation.service.*;
|
||||||
|
import springfox.documentation.spi.DocumentationType;
|
||||||
|
import springfox.documentation.spi.service.contexts.SecurityContext;
|
||||||
|
import springfox.documentation.spring.web.plugins.Docket;
|
||||||
|
import springfox.documentation.swagger2.annotations.EnableSwagger2;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* swagger配置
|
||||||
|
*/
|
||||||
|
@Configuration
|
||||||
|
@EnableSwagger2
|
||||||
|
@EnableAutoConfiguration
|
||||||
|
@ConditionalOnProperty(name = "swagger.enabled", matchIfMissing = true)
|
||||||
|
public class SwaggerAutoConfiguration {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认的排除路径,排除Spring Boot默认的错误处理路径和端点
|
||||||
|
*/
|
||||||
|
private static final List<String> DEFAULT_EXCLUDE_PATH = Arrays.asList("/error","/actuator/**");
|
||||||
|
private static final String BASE_PATH = "/**";
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
@ConditionalOnMissingBean
|
||||||
|
public SwaggerProperties swaggerProperties() {
|
||||||
|
return new SwaggerProperties();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Bean
|
||||||
|
public Docket api(SwaggerProperties swaggerProperties) {
|
||||||
|
// base-path处理
|
||||||
|
if (swaggerProperties.getBasePath().isEmpty()) {
|
||||||
|
swaggerProperties.getBasePath().add(BASE_PATH);
|
||||||
|
}
|
||||||
|
//noinspection unchecked
|
||||||
|
List<Predicate<String>> basePath = new ArrayList();
|
||||||
|
swaggerProperties.getBasePath().forEach(path -> basePath.add(PathSelectors.ant(path)));
|
||||||
|
|
||||||
|
// exclude-path处理
|
||||||
|
if (swaggerProperties.getExcludePath().isEmpty()) {
|
||||||
|
swaggerProperties.getExcludePath().addAll(DEFAULT_EXCLUDE_PATH);
|
||||||
|
}
|
||||||
|
List<Predicate<String>> excludePath = new ArrayList<>();
|
||||||
|
swaggerProperties.getExcludePath().forEach(path -> excludePath.add(PathSelectors.ant(path)));
|
||||||
|
|
||||||
|
//noinspection Guava
|
||||||
|
return new Docket(DocumentationType.SWAGGER_2)
|
||||||
|
.host(swaggerProperties.getHost())
|
||||||
|
.apiInfo(apiInfo(swaggerProperties)).select()
|
||||||
|
.apis(RequestHandlerSelectors.basePackage(swaggerProperties.getBasePackage()))
|
||||||
|
.paths(Predicates.and(Predicates.not(Predicates.or(excludePath)), Predicates.or(basePath)))
|
||||||
|
.build()
|
||||||
|
.securitySchemes(Collections.singletonList(securitySchema()))
|
||||||
|
.securityContexts(Collections.singletonList(securityContext()))
|
||||||
|
.pathMapping("/");
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 配置默认的全局鉴权策略的开关,通过正则表达式进行匹配;默认匹配所有URL
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private SecurityContext securityContext() {
|
||||||
|
return SecurityContext.builder()
|
||||||
|
.securityReferences(defaultAuth())
|
||||||
|
.forPaths(PathSelectors.regex(swaggerProperties().getAuthorization().getAuthRegex()))
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 默认的全局鉴权策略
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
private List<SecurityReference> defaultAuth() {
|
||||||
|
ArrayList<AuthorizationScope> authorizationScopeList = new ArrayList<>();
|
||||||
|
swaggerProperties().getAuthorization().getAuthorizationScopeList().forEach(authorizationScope -> authorizationScopeList.add(new AuthorizationScope(authorizationScope.getScope(), authorizationScope.getDescription())));
|
||||||
|
AuthorizationScope[] authorizationScopes = new AuthorizationScope[authorizationScopeList.size()];
|
||||||
|
return Collections.singletonList(SecurityReference.builder()
|
||||||
|
.reference(swaggerProperties().getAuthorization().getName())
|
||||||
|
.scopes(authorizationScopeList.toArray(authorizationScopes))
|
||||||
|
.build());
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private OAuth securitySchema() {
|
||||||
|
ArrayList<AuthorizationScope> authorizationScopeList = new ArrayList<>();
|
||||||
|
swaggerProperties().getAuthorization().getAuthorizationScopeList().forEach(authorizationScope -> authorizationScopeList.add(new AuthorizationScope(authorizationScope.getScope(), authorizationScope.getDescription())));
|
||||||
|
ArrayList<GrantType> grantTypes = new ArrayList<>();
|
||||||
|
swaggerProperties().getAuthorization().getTokenUrlList().forEach(tokenUrl -> grantTypes.add(new ResourceOwnerPasswordCredentialsGrant(tokenUrl)));
|
||||||
|
return new OAuth(swaggerProperties().getAuthorization().getName(), authorizationScopeList, grantTypes);
|
||||||
|
}
|
||||||
|
|
||||||
|
private ApiInfo apiInfo(SwaggerProperties swaggerProperties) {
|
||||||
|
return new ApiInfoBuilder()
|
||||||
|
.title(swaggerProperties.getTitle())
|
||||||
|
.description(swaggerProperties.getDescription())
|
||||||
|
.license(swaggerProperties.getLicense())
|
||||||
|
.licenseUrl(swaggerProperties.getLicenseUrl())
|
||||||
|
.termsOfServiceUrl(swaggerProperties.getTermsOfServiceUrl())
|
||||||
|
.contact(new Contact(swaggerProperties.getContact().getName(), swaggerProperties.getContact().getUrl(), swaggerProperties.getContact().getEmail()))
|
||||||
|
.version(swaggerProperties.getVersion())
|
||||||
|
.build();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
@ -0,0 +1,145 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
package com.pig4cloud.pigx.common.swagger.config;
|
||||||
|
|
||||||
|
import lombok.Data;
|
||||||
|
import lombok.NoArgsConstructor;
|
||||||
|
import org.springframework.boot.context.properties.ConfigurationProperties;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* SwaggerProperties
|
||||||
|
*
|
||||||
|
* @author: lengleng
|
||||||
|
* @date: 2018/7/25 14:00
|
||||||
|
*/
|
||||||
|
@Data
|
||||||
|
@ConfigurationProperties("swagger")
|
||||||
|
public class SwaggerProperties {
|
||||||
|
/**
|
||||||
|
* 是否开启swagger
|
||||||
|
*/
|
||||||
|
private Boolean enabled;
|
||||||
|
/**
|
||||||
|
* swagger会解析的包路径
|
||||||
|
**/
|
||||||
|
private String basePackage = "";
|
||||||
|
/**
|
||||||
|
* swagger会解析的url规则
|
||||||
|
**/
|
||||||
|
private List<String> basePath = new ArrayList<>();
|
||||||
|
/**
|
||||||
|
* 在basePath基础上需要排除的url规则
|
||||||
|
**/
|
||||||
|
private List<String> excludePath = new ArrayList<>();
|
||||||
|
/**
|
||||||
|
* 标题
|
||||||
|
**/
|
||||||
|
private String title = "";
|
||||||
|
/**
|
||||||
|
* 描述
|
||||||
|
**/
|
||||||
|
private String description = "";
|
||||||
|
/**
|
||||||
|
* 版本
|
||||||
|
**/
|
||||||
|
private String version = "";
|
||||||
|
/**
|
||||||
|
* 许可证
|
||||||
|
**/
|
||||||
|
private String license = "";
|
||||||
|
/**
|
||||||
|
* 许可证URL
|
||||||
|
**/
|
||||||
|
private String licenseUrl = "";
|
||||||
|
/**
|
||||||
|
* 服务条款URL
|
||||||
|
**/
|
||||||
|
private String termsOfServiceUrl = "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* host信息
|
||||||
|
**/
|
||||||
|
private String host = "";
|
||||||
|
/**
|
||||||
|
* 联系人信息
|
||||||
|
*/
|
||||||
|
private Contact contact = new Contact();
|
||||||
|
/**
|
||||||
|
* 全局统一鉴权配置
|
||||||
|
**/
|
||||||
|
private Authorization authorization = new Authorization();
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class Contact {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 联系人
|
||||||
|
**/
|
||||||
|
private String name = "";
|
||||||
|
/**
|
||||||
|
* 联系人url
|
||||||
|
**/
|
||||||
|
private String url = "";
|
||||||
|
/**
|
||||||
|
* 联系人email
|
||||||
|
**/
|
||||||
|
private String email = "";
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class Authorization {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鉴权策略ID,需要和SecurityReferences ID保持一致
|
||||||
|
*/
|
||||||
|
private String name = "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 需要开启鉴权URL的正则
|
||||||
|
*/
|
||||||
|
private String authRegex = "^.*$";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 鉴权作用域列表
|
||||||
|
*/
|
||||||
|
private List<AuthorizationScope> authorizationScopeList = new ArrayList<>();
|
||||||
|
|
||||||
|
private List<String> tokenUrlList = new ArrayList<>();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Data
|
||||||
|
@NoArgsConstructor
|
||||||
|
public static class AuthorizationScope {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作用域名称
|
||||||
|
*/
|
||||||
|
private String scope = "";
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 作用域描述
|
||||||
|
*/
|
||||||
|
private String description = "";
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
@ -33,5 +33,6 @@
|
|||||||
<module>pig-common-core</module>
|
<module>pig-common-core</module>
|
||||||
<module>pig-common-log</module>
|
<module>pig-common-log</module>
|
||||||
<module>pig-common-security</module>
|
<module>pig-common-security</module>
|
||||||
|
<module>pig-common-swagger</module>
|
||||||
</modules>
|
</modules>
|
||||||
</project>
|
</project>
|
||||||
|
@ -70,3 +70,21 @@ security:
|
|||||||
resource:
|
resource:
|
||||||
loadBalanced: true
|
loadBalanced: true
|
||||||
token-info-uri: http://pig-auth/oauth/check_token
|
token-info-uri: http://pig-auth/oauth/check_token
|
||||||
|
|
||||||
|
# swagger 配置
|
||||||
|
swagger:
|
||||||
|
title: Pig Swagger API
|
||||||
|
license: Powered By pig4cloud
|
||||||
|
licenseUrl: https://pig4cloud.com
|
||||||
|
terms-of-service-url: https://pig4cloud.com
|
||||||
|
contact:
|
||||||
|
email: wangiegie@gmail.com
|
||||||
|
url: https://pig4cloud.com
|
||||||
|
authorization:
|
||||||
|
name: pig4cloud OAuth
|
||||||
|
auth-regex: ^.*$
|
||||||
|
authorization-scope-list:
|
||||||
|
- scope: server
|
||||||
|
description: server all
|
||||||
|
token-url-list:
|
||||||
|
- http://${GATEWAY-HOST:pig-gateway}:${GATEWAY-PORT:9999}/auth/oauth/token
|
||||||
|
@ -20,4 +20,5 @@ spring:
|
|||||||
# 直接放行URL
|
# 直接放行URL
|
||||||
ignore:
|
ignore:
|
||||||
urls:
|
urls:
|
||||||
|
- /v2/api-docs
|
||||||
- /actuator/**
|
- /actuator/**
|
||||||
|
@ -17,6 +17,7 @@ spring:
|
|||||||
# 直接放行URL
|
# 直接放行URL
|
||||||
ignore:
|
ignore:
|
||||||
urls:
|
urls:
|
||||||
|
- /v2/api-docs
|
||||||
- /actuator/**
|
- /actuator/**
|
||||||
- /user/info/*
|
- /user/info/*
|
||||||
- /log/**
|
- /log/**
|
||||||
|
@ -56,6 +56,17 @@
|
|||||||
<artifactId>pig-common-core</artifactId>
|
<artifactId>pig-common-core</artifactId>
|
||||||
<version>2.5.2.snapshot</version>
|
<version>2.5.2.snapshot</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--接口文档-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>io.springfox</groupId>
|
||||||
|
<artifactId>springfox-swagger-ui</artifactId>
|
||||||
|
<version>${swagger.fox.version}</version>
|
||||||
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pig4cloud</groupId>
|
||||||
|
<artifactId>pig-common-swagger</artifactId>
|
||||||
|
<version>2.5.2.snapshot</version>
|
||||||
|
</dependency>
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
||||||
<build>
|
<build>
|
||||||
|
@ -18,6 +18,9 @@ package com.pig4cloud.pig.gateway.config;
|
|||||||
|
|
||||||
import com.pig4cloud.pig.gateway.handler.HystrixFallbackHandler;
|
import com.pig4cloud.pig.gateway.handler.HystrixFallbackHandler;
|
||||||
import com.pig4cloud.pig.gateway.handler.ImageCodeHandler;
|
import com.pig4cloud.pig.gateway.handler.ImageCodeHandler;
|
||||||
|
import com.pig4cloud.pig.gateway.handler.SwaggerResourceHandler;
|
||||||
|
import com.pig4cloud.pig.gateway.handler.SwaggerSecurityHandler;
|
||||||
|
import com.pig4cloud.pig.gateway.handler.SwaggerUiHandler;
|
||||||
import lombok.AllArgsConstructor;
|
import lombok.AllArgsConstructor;
|
||||||
import lombok.extern.slf4j.Slf4j;
|
import lombok.extern.slf4j.Slf4j;
|
||||||
import org.springframework.context.annotation.Bean;
|
import org.springframework.context.annotation.Bean;
|
||||||
@ -38,6 +41,10 @@ import org.springframework.web.reactive.function.server.RouterFunctions;
|
|||||||
public class RouterFunctionConfiguration {
|
public class RouterFunctionConfiguration {
|
||||||
private final HystrixFallbackHandler hystrixFallbackHandler;
|
private final HystrixFallbackHandler hystrixFallbackHandler;
|
||||||
private final ImageCodeHandler imageCodeHandler;
|
private final ImageCodeHandler imageCodeHandler;
|
||||||
|
private final SwaggerResourceHandler swaggerResourceHandler;
|
||||||
|
private final SwaggerSecurityHandler swaggerSecurityHandler;
|
||||||
|
private final SwaggerUiHandler swaggerUiHandler;
|
||||||
|
|
||||||
|
|
||||||
@Bean
|
@Bean
|
||||||
public RouterFunction routerFunction() {
|
public RouterFunction routerFunction() {
|
||||||
@ -45,7 +52,13 @@ public class RouterFunctionConfiguration {
|
|||||||
RequestPredicates.path("/fallback")
|
RequestPredicates.path("/fallback")
|
||||||
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), hystrixFallbackHandler)
|
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), hystrixFallbackHandler)
|
||||||
.andRoute(RequestPredicates.GET("/code")
|
.andRoute(RequestPredicates.GET("/code")
|
||||||
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), imageCodeHandler);
|
.and(RequestPredicates.accept(MediaType.TEXT_PLAIN)), imageCodeHandler)
|
||||||
|
.andRoute(RequestPredicates.GET("/swagger-resources")
|
||||||
|
.and(RequestPredicates.accept(MediaType.ALL)), swaggerResourceHandler)
|
||||||
|
.andRoute(RequestPredicates.GET("/swagger-resources/configuration/ui")
|
||||||
|
.and(RequestPredicates.accept(MediaType.ALL)), swaggerUiHandler)
|
||||||
|
.andRoute(RequestPredicates.GET("/swagger-resources/configuration/security")
|
||||||
|
.and(RequestPredicates.accept(MediaType.ALL)), swaggerSecurityHandler);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -0,0 +1,67 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.pig4cloud.pig.gateway.config;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import org.springframework.cloud.gateway.config.GatewayProperties;
|
||||||
|
import org.springframework.cloud.gateway.route.RouteLocator;
|
||||||
|
import org.springframework.cloud.gateway.support.NameUtils;
|
||||||
|
import org.springframework.context.annotation.Primary;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import springfox.documentation.swagger.web.SwaggerResource;
|
||||||
|
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* @date 2019-11-28
|
||||||
|
*/
|
||||||
|
@Component
|
||||||
|
@Primary
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SwaggerProviderConfiguration implements SwaggerResourcesProvider {
|
||||||
|
private static final String API_URI = "/v2/api-docs";
|
||||||
|
private final RouteLocator routeLocator;
|
||||||
|
private final GatewayProperties gatewayProperties;
|
||||||
|
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<SwaggerResource> get() {
|
||||||
|
List<SwaggerResource> resources = new ArrayList<>();
|
||||||
|
List<String> routes = new ArrayList<>();
|
||||||
|
routeLocator.getRoutes().subscribe(route -> routes.add(route.getId()));
|
||||||
|
gatewayProperties.getRoutes().stream().filter(routeDefinition -> routes.contains(routeDefinition.getId()))
|
||||||
|
.forEach(routeDefinition -> routeDefinition.getPredicates().stream()
|
||||||
|
.filter(predicateDefinition -> "Path".equalsIgnoreCase(predicateDefinition.getName()))
|
||||||
|
.filter(predicateDefinition -> !"pig-auth".equalsIgnoreCase(routeDefinition.getId()))
|
||||||
|
.forEach(predicateDefinition -> resources.add(swaggerResource(routeDefinition.getId(),
|
||||||
|
predicateDefinition.getArgs().get(NameUtils.GENERATED_NAME_PREFIX + "0")
|
||||||
|
.replace("/**", API_URI)))));
|
||||||
|
return resources;
|
||||||
|
}
|
||||||
|
|
||||||
|
private SwaggerResource swaggerResource(String name, String location) {
|
||||||
|
SwaggerResource swaggerResource = new SwaggerResource();
|
||||||
|
swaggerResource.setName(name);
|
||||||
|
swaggerResource.setLocation(location);
|
||||||
|
swaggerResource.setSwaggerVersion("2.0");
|
||||||
|
return swaggerResource;
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,55 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.pig4cloud.pig.gateway.handler;
|
||||||
|
|
||||||
|
import lombok.AllArgsConstructor;
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.reactive.function.BodyInserters;
|
||||||
|
import org.springframework.web.reactive.function.server.HandlerFunction;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
import springfox.documentation.swagger.web.SwaggerResourcesProvider;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* @date 2018-07-19
|
||||||
|
* SwaggerResourceHandler
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
@AllArgsConstructor
|
||||||
|
public class SwaggerResourceHandler implements HandlerFunction<ServerResponse> {
|
||||||
|
private final SwaggerResourcesProvider swaggerResources;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the given request.
|
||||||
|
*
|
||||||
|
* @param request the request to handler
|
||||||
|
* @return the response
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<ServerResponse> handle(ServerRequest request) {
|
||||||
|
return ServerResponse.status(HttpStatus.OK)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.body(BodyInserters.fromValue(swaggerResources.get()));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.pig4cloud.pig.gateway.handler;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.reactive.function.BodyInserters;
|
||||||
|
import org.springframework.web.reactive.function.server.HandlerFunction;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
import springfox.documentation.swagger.web.SecurityConfiguration;
|
||||||
|
import springfox.documentation.swagger.web.SecurityConfigurationBuilder;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* @date 2018-07-19
|
||||||
|
* SwaggerSecurityHandler
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class SwaggerSecurityHandler implements HandlerFunction<ServerResponse> {
|
||||||
|
@Autowired(required = false)
|
||||||
|
private SecurityConfiguration securityConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the given request.
|
||||||
|
*
|
||||||
|
* @param request the request to handler
|
||||||
|
* @return the response
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<ServerResponse> handle(ServerRequest request) {
|
||||||
|
return ServerResponse.status(HttpStatus.OK)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.body(BodyInserters.fromValue(
|
||||||
|
Optional.ofNullable(securityConfiguration)
|
||||||
|
.orElse(SecurityConfigurationBuilder.builder().build())));
|
||||||
|
}
|
||||||
|
}
|
@ -0,0 +1,60 @@
|
|||||||
|
/*
|
||||||
|
* Copyright (c) 2018-2025, lengleng All rights reserved.
|
||||||
|
*
|
||||||
|
* Redistribution and use in source and binary forms, with or without
|
||||||
|
* modification, are permitted provided that the following conditions are met:
|
||||||
|
*
|
||||||
|
* Redistributions of source code must retain the above copyright notice,
|
||||||
|
* this list of conditions and the following disclaimer.
|
||||||
|
* Redistributions in binary form must reproduce the above copyright
|
||||||
|
* notice, this list of conditions and the following disclaimer in the
|
||||||
|
* documentation and/or other materials provided with the distribution.
|
||||||
|
* Neither the name of the pig4cloud.com developer nor the names of its
|
||||||
|
* contributors may be used to endorse or promote products derived from
|
||||||
|
* this software without specific prior written permission.
|
||||||
|
* Author: lengleng (wangiegie@gmail.com)
|
||||||
|
*/
|
||||||
|
|
||||||
|
package com.pig4cloud.pig.gateway.handler;
|
||||||
|
|
||||||
|
import lombok.extern.slf4j.Slf4j;
|
||||||
|
import org.springframework.beans.factory.annotation.Autowired;
|
||||||
|
import org.springframework.http.HttpStatus;
|
||||||
|
import org.springframework.http.MediaType;
|
||||||
|
import org.springframework.stereotype.Component;
|
||||||
|
import org.springframework.web.reactive.function.BodyInserters;
|
||||||
|
import org.springframework.web.reactive.function.server.HandlerFunction;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerRequest;
|
||||||
|
import org.springframework.web.reactive.function.server.ServerResponse;
|
||||||
|
import reactor.core.publisher.Mono;
|
||||||
|
import springfox.documentation.swagger.web.UiConfiguration;
|
||||||
|
import springfox.documentation.swagger.web.UiConfigurationBuilder;
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @author lengleng
|
||||||
|
* @date 2018-07-19
|
||||||
|
* SwaggerUiHandler
|
||||||
|
*/
|
||||||
|
@Slf4j
|
||||||
|
@Component
|
||||||
|
public class SwaggerUiHandler implements HandlerFunction<ServerResponse> {
|
||||||
|
@Autowired(required = false)
|
||||||
|
private UiConfiguration uiConfiguration;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Handle the given request.
|
||||||
|
*
|
||||||
|
* @param request the request to handler
|
||||||
|
* @return the response
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
public Mono<ServerResponse> handle(ServerRequest request) {
|
||||||
|
return ServerResponse.status(HttpStatus.OK)
|
||||||
|
.contentType(MediaType.APPLICATION_JSON)
|
||||||
|
.body(BodyInserters.fromValue(
|
||||||
|
Optional.ofNullable(uiConfiguration)
|
||||||
|
.orElse(UiConfigurationBuilder.builder().build())));
|
||||||
|
}
|
||||||
|
}
|
@ -48,6 +48,12 @@
|
|||||||
<artifactId>pig-common-log</artifactId>
|
<artifactId>pig-common-log</artifactId>
|
||||||
<version>2.5.2.snapshot</version>
|
<version>2.5.2.snapshot</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<!--接口文档-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pig4cloud</groupId>
|
||||||
|
<artifactId>pig-common-swagger</artifactId>
|
||||||
|
<version>2.5.2.snapshot</version>
|
||||||
|
</dependency>
|
||||||
<!--配置中心客户端-->
|
<!--配置中心客户端-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
@ -19,6 +19,7 @@ package com.pig4cloud.pig.admin;
|
|||||||
|
|
||||||
import com.pig4cloud.pig.common.security.annotation.EnablePigFeignClients;
|
import com.pig4cloud.pig.common.security.annotation.EnablePigFeignClients;
|
||||||
import com.pig4cloud.pig.common.security.annotation.EnablePigResourceServer;
|
import com.pig4cloud.pig.common.security.annotation.EnablePigResourceServer;
|
||||||
|
import com.pig4cloud.pigx.common.swagger.annotation.EnablePigSwagger2;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.cloud.client.SpringCloudApplication;
|
import org.springframework.cloud.client.SpringCloudApplication;
|
||||||
|
|
||||||
@ -27,6 +28,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
|
|||||||
* @date 2018年06月21日
|
* @date 2018年06月21日
|
||||||
* 用户统一管理系统
|
* 用户统一管理系统
|
||||||
*/
|
*/
|
||||||
|
@EnablePigSwagger2
|
||||||
@EnablePigResourceServer
|
@EnablePigResourceServer
|
||||||
@EnablePigFeignClients
|
@EnablePigFeignClients
|
||||||
@SpringCloudApplication
|
@SpringCloudApplication
|
||||||
|
72
pig-upms/pig-upms-biz/src/main/resources/logback-spring.xml
Executable file
72
pig-upms/pig-upms-biz/src/main/resources/logback-spring.xml
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!--
|
||||||
|
~ Copyright (c) 2019-2020, 冷冷 (wangiegie@gmail.com).
|
||||||
|
~ <p>
|
||||||
|
~ Licensed under the GNU Lesser General Public License 3.0 (the "License");
|
||||||
|
~ you may not use this file except in compliance with the License.
|
||||||
|
~ You may obtain a copy of the License at
|
||||||
|
~ <p>
|
||||||
|
~ https://www.gnu.org/licenses/lgpl.html
|
||||||
|
~ <p>
|
||||||
|
~ Unless required by applicable law or agreed to in writing, software
|
||||||
|
~ distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
~ See the License for the specific language governing permissions and
|
||||||
|
~ limitations under the License.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<configuration debug="false" scan="false">
|
||||||
|
<springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
|
||||||
|
<property name="log.path" value="logs/${spring.application.name}"/>
|
||||||
|
<!-- 彩色日志格式 -->
|
||||||
|
<property name="CONSOLE_LOG_PATTERN"
|
||||||
|
value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
|
||||||
|
<!-- 彩色日志依赖的渲染类 -->
|
||||||
|
<conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
|
||||||
|
<conversionRule conversionWord="wex"
|
||||||
|
converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
|
||||||
|
<conversionRule conversionWord="wEx"
|
||||||
|
converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
|
||||||
|
<!-- Console log output -->
|
||||||
|
<appender name="console" class="ch.qos.logback.core.ConsoleAppender">
|
||||||
|
<encoder>
|
||||||
|
<pattern>${CONSOLE_LOG_PATTERN}</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Log file debug output -->
|
||||||
|
<appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/debug.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Log file error output -->
|
||||||
|
<appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
|
||||||
|
<file>${log.path}/error.log</file>
|
||||||
|
<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
|
||||||
|
<fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
|
||||||
|
<maxFileSize>50MB</maxFileSize>
|
||||||
|
<maxHistory>30</maxHistory>
|
||||||
|
</rollingPolicy>
|
||||||
|
<encoder>
|
||||||
|
<pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
|
||||||
|
</encoder>
|
||||||
|
<filter class="ch.qos.logback.classic.filter.ThresholdFilter">
|
||||||
|
<level>ERROR</level>
|
||||||
|
</filter>
|
||||||
|
</appender>
|
||||||
|
|
||||||
|
<!-- Level: FATAL 0 ERROR 3 WARN 4 INFO 6 DEBUG 7 -->
|
||||||
|
<root level="DEBUG">
|
||||||
|
<appender-ref ref="console"/>
|
||||||
|
<appender-ref ref="debug"/>
|
||||||
|
<appender-ref ref="error"/>
|
||||||
|
</root>
|
||||||
|
</configuration>
|
@ -31,6 +31,12 @@
|
|||||||
<description>代码生成模块</description>
|
<description>代码生成模块</description>
|
||||||
|
|
||||||
<dependencies>
|
<dependencies>
|
||||||
|
<!--接口文档-->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.pig4cloud</groupId>
|
||||||
|
<artifactId>pig-common-swagger</artifactId>
|
||||||
|
<version>2.5.2.snapshot</version>
|
||||||
|
</dependency>
|
||||||
<!--配置中心客户端-->
|
<!--配置中心客户端-->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.springframework.cloud</groupId>
|
<groupId>org.springframework.cloud</groupId>
|
||||||
|
@ -18,6 +18,7 @@ package com.pig4cloud.pig.codegen;
|
|||||||
|
|
||||||
import com.pig4cloud.pig.common.security.annotation.EnablePigFeignClients;
|
import com.pig4cloud.pig.common.security.annotation.EnablePigFeignClients;
|
||||||
import com.pig4cloud.pig.common.security.annotation.EnablePigResourceServer;
|
import com.pig4cloud.pig.common.security.annotation.EnablePigResourceServer;
|
||||||
|
import com.pig4cloud.pigx.common.swagger.annotation.EnablePigSwagger2;
|
||||||
import org.springframework.boot.SpringApplication;
|
import org.springframework.boot.SpringApplication;
|
||||||
import org.springframework.cloud.client.SpringCloudApplication;
|
import org.springframework.cloud.client.SpringCloudApplication;
|
||||||
|
|
||||||
@ -26,6 +27,7 @@ import org.springframework.cloud.client.SpringCloudApplication;
|
|||||||
* @date 2019/2/1
|
* @date 2019/2/1
|
||||||
* 代码生成模块
|
* 代码生成模块
|
||||||
*/
|
*/
|
||||||
|
@EnablePigSwagger2
|
||||||
@EnablePigFeignClients
|
@EnablePigFeignClients
|
||||||
@EnablePigResourceServer
|
@EnablePigResourceServer
|
||||||
@SpringCloudApplication
|
@SpringCloudApplication
|
||||||
|
26
pom.xml
26
pom.xml
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<spring-boot.version>2.2.1.RELEASE</spring-boot.version>
|
<spring-boot.version>2.2.1.RELEASE</spring-boot.version>
|
||||||
<spring-cloud.version>Hoxton.RC2</spring-cloud.version>
|
<spring-cloud.version>Hoxton.RELEASE</spring-cloud.version>
|
||||||
<spring-platform.version>Cairo-SR8</spring-platform.version>
|
<spring-platform.version>Cairo-SR8</spring-platform.version>
|
||||||
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
|
||||||
<maven.compiler.source>1.8</maven.compiler.source>
|
<maven.compiler.source>1.8</maven.compiler.source>
|
||||||
@ -45,6 +45,8 @@
|
|||||||
<kaptcha.version>0.0.9</kaptcha.version>
|
<kaptcha.version>0.0.9</kaptcha.version>
|
||||||
<velocity.version>1.7</velocity.version>
|
<velocity.version>1.7</velocity.version>
|
||||||
<jasypt.version>2.1.0</jasypt.version>
|
<jasypt.version>2.1.0</jasypt.version>
|
||||||
|
<swagger.fox.version>2.9.2</swagger.fox.version>
|
||||||
|
<knife4j.version.version>1.9.6</knife4j.version.version>
|
||||||
<security.oauth.version>2.3.6.RELEASE</security.oauth.version>
|
<security.oauth.version>2.3.6.RELEASE</security.oauth.version>
|
||||||
</properties>
|
</properties>
|
||||||
|
|
||||||
@ -183,14 +185,6 @@
|
|||||||
</build>
|
</build>
|
||||||
|
|
||||||
<repositories>
|
<repositories>
|
||||||
<repository>
|
|
||||||
<id>spring-milestones</id>
|
|
||||||
<name>Spring Milestones</name>
|
|
||||||
<url>https://repo.spring.io/milestone</url>
|
|
||||||
<snapshots>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
</snapshots>
|
|
||||||
</repository>
|
|
||||||
<!--阿里云主仓库,代理了maven central和jcenter仓库-->
|
<!--阿里云主仓库,代理了maven central和jcenter仓库-->
|
||||||
<repository>
|
<repository>
|
||||||
<id>aliyun</id>
|
<id>aliyun</id>
|
||||||
@ -204,18 +198,4 @@
|
|||||||
</snapshots>
|
</snapshots>
|
||||||
</repository>
|
</repository>
|
||||||
</repositories>
|
</repositories>
|
||||||
<pluginRepositories>
|
|
||||||
<!--阿里云代理Spring 插件仓库-->
|
|
||||||
<pluginRepository>
|
|
||||||
<id>spring-plugin</id>
|
|
||||||
<name>spring-plugin</name>
|
|
||||||
<url>https://maven.aliyun.com/repository/spring-plugin</url>
|
|
||||||
<releases>
|
|
||||||
<enabled>true</enabled>
|
|
||||||
</releases>
|
|
||||||
<snapshots>
|
|
||||||
<enabled>false</enabled>
|
|
||||||
</snapshots>
|
|
||||||
</pluginRepository>
|
|
||||||
</pluginRepositories>
|
|
||||||
</project>
|
</project>
|
||||||
|
Loading…
Reference in New Issue
Block a user