本帖子主要是自己参考用的,写的不好的地方还请指出,谢谢.
SpringCloud 配置
父项目pom:
<packaging>pom</packaging>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>2.0.8.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Finchley.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!--zipkin链路追踪-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-sleuth</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-zipkin</artifactId>
</dependency>
</dependencies>
公共模块pom:
<dependencies>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
<!-- jjwt -->
<dependency>
<groupId>io.jsonwebtoken</groupId>
<artifactId>jjwt</artifactId>
<version>0.9.1</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.47</version>
</dependency>
</dependencies>
registry项目:
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
registry的yml文件:
#端口 应用名称 数据源 eureka mybatis 日志
server:
port: 13000
spring:
application:
name: kmall-goods-service
datasource:
username: root
password: 1234
url: jdbc:mysql://127.0.0.1:3306/kmalldb
zipkin:
base-url: http://192.168.232.130:9411//这里是我自己在虚拟机上搭的追踪服务
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
mybatis:
mapper-locations: classpath:/mybatis/mapper/*.xml
type-aliases-package: cn.kgc.goods.dto
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.kgc: debug
provider项目pom:
<dependencies>
<!--common-->
<dependency>
<groupId>cn.kgc</groupId>
<artifactId>kmall-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--mysql-->
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
</dependency>
<!--mybatis-->
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
<version>2.1.2</version>
</dependency>
<!--通用mapper-->
<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper-spring-boot-starter</artifactId>
<version>2.1.5</version>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--swagger-->
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.9.2</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.9.2</version>
</dependency>
</dependencies>
provider的yml文件:
#端口 应用名称 数据源 eureka mybatis 日志
server:
port: 13000
spring:
application:
name: kmall-goods-service
datasource:
username: root
password: 1234
url: jdbc:mysql://127.0.0.1:3306/kmalldb
zipkin:
base-url: http://192.168.232.130:9411
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
mybatis:
mapper-locations: classpath:/mybatis/mapper/*.xml
type-aliases-package: cn.kgc.goods.dto
configuration:
map-underscore-to-camel-case: true
logging:
level:
cn.kgc: debug
consumer项目pom:
这里是通过openFeign进行服务之间调用
<dependencies>
<!--openfeign-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<!--eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--common-->
<dependency>
<groupId>cn.kgc</groupId>
<artifactId>kmall-common</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--web-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--lombok-->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<!--test-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
consumer项目yml文件:
server:
port: 80
eureka:
client:
register-with-eureka: true
fetchRegistry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka
如果要修改负载均衡策略:
# 配置ribbon
cloud-payment-service:
ribbon:
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 随机
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RoundRobinRule #配置规则 轮询
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RetryRule #配置规则 重试
# NFLoadBalancerRuleClassName: com.netflix.loadbalancer.WeightedResponseTimeRule #配置规则 响应时间权重
NFLoadBalancerRuleClassName: com.netflix.loadbalancer.RandomRule #配置规则 最空闲连接策略
ConnectTimeout: 500 #请求连接超时时间
ReadTimeout: 1000 #请求处理的超时时间
OkToRetryOnAllOperations: true #对所有请求都进行重试
MaxAutoRetriesNextServer: 2 #切换实例的重试次数
MaxAutoRetries: 1 #对当前实例的重试次数
zuul网关pom:
<dependencies>
<!--common-->
<dependency>
<artifactId>kmall-common</artifactId>
<groupId>cn.kgc</groupId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--zuul网关-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!--eureka-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
</dependencies>
zuul网关yml文件:
#端口 ,应用名称,eureka,路由
server:
port: 9966
spring:
application:
name: kmall-zuul
servlet:
multipart:
max-file-size: 10MB # 单位大写
max-request-size: 20MB
zipkin:
base-url: http://192.168.232.130:9411
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka
zuul:
prefix: /api
routes:
kmall-user-service:
path: /user-api/**
service-id: kmall-user-service
strip-prefix: true #true表示忽略/user-api前缀,false表示保留前缀
kmall-goods-service:
path: /goods-api/**
service-id: kmall-goods-service
strip-prefix: true
zuul网关配置类:
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
//跨域处理
@Configuration
public class CorsConfig {
@Bean
public CorsFilter corsFilter(){
//1.添加CORS配置信息
CorsConfiguration config = new CorsConfiguration();
//1)
config.addAllowedOrigin("http://localhost:8888");//这里填写请求的前端服务器
//2)是否发送Cookie信息
config.setAllowCredentials(true);
//3)允许请求的方式
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("HEAD");
config.addAllowedMethod("GET");
config.addAllowedMethod("PUT");
config.addAllowedMethod("POST");
config.addAllowedMethod("DELETE");
config.addAllowedMethod("PATCH");
//4)
config.addAllowedHeader("*");
//2.添加映射路径,我们拦截一切请求
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**",config);
//3.返回新的CorsFilter.
return new CorsFilter(configSource);
}
}