Spring Cloud DisDiscovery
下的Eureka Server
选项Eureka Server
的依赖,在父项目添加以下pom文件<!--统一管理版本-->
<spring-cloud.version>Hoxton.SR9</spring-cloud.version>
<!--SpringCloud家族依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependencies>
<!-- SpringBoot WEB,启动项目时会启动Tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency> <!-- Eureka Server,是Spring Cloud家族中的 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
# 当前项目运行在服务器的哪个端口,Eureka Server推荐使用8761
server.port=8761
# Eureka Server不要注册自已
eureka.client.register-with-eureka=false
# Eureka Server不要从别处抓取注册表
eureka.client.fetch-registry=false
@EnableEurekaServer
注解EMERGENCY! EUREKA MAY BE INCORRECTLY CLAIMING INSTANCES ARE UP WHEN THEY’RE NOT. RENEWALS ARE LESSER THAN THRESHOLD AND HENCE THE INSTANCES ARE NOT BEING EXPIRED JUST TO BE SAFE.
可以无视以上警告,后续,当有服务注册后的一段时间内,该警告会自动消失!
注意:从现在开始往后的开发过程中,当需要启动项目时,必须先启动Eureka Server,再启动其它服务!如果没有启动Eureka Server就直接启动任何Eureka Client,会出现以下错误:
Connection refused:connect
提示:即使出现以上错误,也不影响以上项目单体运行,并且,补充启动Eureka Server即可,所有的Eureka Client都会每间隔30秒自动注册一次。
需要将项目共同类放到一个通用项目中,其它各项目均依赖于这个项目,就可以使用到相同的数据类型!
<straw-commons.version>0.0.1-SNAPSHOT</straw-commons.version>
<!--通用项目-->
<dependency>
<groupId></groupId>
<artifactId></artifactId>
<version>${straw-commons.version}</version>
</dependency>
pom文件中引入,Spring Cloud家族的Eureka Client
<!-- Eureka Client,是Spring Cloud家族中的 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
配置application.properties
文件
# 当前项目运行在服务器的哪个端口
server.port=8081
# 配置连接MySQL中的straw数据库
spring.datasource.url=jdbc:mysql://localhost:3306/straw?useUnicode=true&characterEncoding=utf-8&serverTimezone=Asia/Shanghai
spring.datasource.username=root
spring.datasource.password=root
# 配置Druid数据库连接池
spring.datasource.type=com.alibaba.druid.pool.DruidDataSource
spring.datasource.druid.initial-size=2
spring.datasource.druid.max-active=5
# 设置日志的显示级别为trace,将显示所有级别的日志
logging.level.cn.tedu.straw=trace
# 设置响应结果的JSON数据不包含为null的属性
spring.jackson.default-property-inclusion=non_null
# 应用程序名称
spring.application.name=api-user
# 当前Eureka Client的实例(instance)在Eureka Server中注册的名称
eureka.instance.appname=${spring.application.name}
# 当前Eureka Client的实例是否使用IP地址来注册
# 当取值为true时,在Eureka Server中的将是当前Eureka Client的IP地址
# 当取值为false时,在Eureka Server中的将是当前Eureka Client的主机名
eureka.instance.prefer-ip-address=true
# 当前Eureka Client的实例在Eureka Server中注册的主机名
# 提示:需要eureka.instance.prefer-ip-address设置为false时有效
eureka.instance.hostname=localhost
# 当前Eureka Client的实例在Eureka Server中注册的IP地址
# 提示:需要eureka.instance.prefer-ip-address设置为true时有效
eureka.instance.ip-address=127.0.0.1
# 当前Eureka Client的实例在Eureka Server状态页显示的名称
eureka.instance.instance-id=${eureka.instance.appname}@${eureka.instance.ip-address}:${server.port}
Spring Cloud Routing
下的Zuul
选项 <!-- SpringBoot WEB,启动项目时会启动Tomcat -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!-- Eureka Client,是Spring Cloud家族中的 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- Zuul网关,是Spring Cloud家族中的 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
<!-- SpringBoot单元测试 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
配置application.properties
文件
# 当前项目运行在服务器的哪个端口
server.port=80
# 应用程序名称
spring.application.name=gateway
# 当前Eureka Client的实例(instance)在Eureka Server中注册的名称
eureka.instance.appname=${spring.application.name}
# 当前Eureka Client的实例是否使用IP地址来注册
# 当取值为true时,在Eureka Server中的将是当前Eureka Client的IP地址
# 当取值为false时,在Eureka Server中的将是当前Eureka Client的主机名
eureka.instance.prefer-ip-address=true
# 当前Eureka Client的实例在Eureka Server中注册的主机名
# 提示:需要eureka.instance.prefer-ip-address设置为false时有效
eureka.instance.hostname=localhost
# 当前Eureka Client的实例在Eureka Server中注册的IP地址
# 提示:需要eureka.instance.prefer-ip-address设置为true时有效
eureka.instance.ip-address=127.0.0.1
# 当前Eureka Client的实例在Eureka Server状态页显示的名称
eureka.instance.instance-id=${eureka.instance.appname}@${eureka.instance.ip-address}:${server.port}
# 转发规则:straw-api-user
zuul.routes.api-user.service-id=api-user
zuul.routes.api-user.path=/api-user/**