写在前面
本例采用maven的模块项目进行说明。源码点这里。
1:项目结构说明
由以下三个项目构成:
myeureka:作为父项目
my-enreka-server:作为eureka服务端
myeureka-client:作为eureka客户端
2:创建父项目myeureka
2.1:创建项目
new
-project
,选择左侧的Maven
:
然后输入GAV
,finish后删除src
因为是作为父项目所以不需要源代码目录,最后只保留pom.xml
。
2.2:设置springboot的parent的starter的pom依赖
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
2.3:设置springcloud的pom依赖
这里以dependecyManagement
方式进行设置:
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
2.4:引入maven的springboot插件
引入后可以通过maven来运行springboot程序:
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2.5:完整pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<groupId>dongshi.daddy</groupId>
<artifactId>my-eureka</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>pom</packaging>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.0.3.RELEASE</version>
<relativePath/>
</parent>
<modules>
<module>my-enreka-server</module>
<module>myeureka-client</module>
</modules>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
<spring-cloud.version>Finchley.RELEASE</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>${spring-cloud.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3:创建子项目my-enreka-server
3.1:创建项目
鼠标选中父项目,new
->module
,选择左侧的Spring Initialzr
:
next后,选择java版本为8,type为maven,然后录入gav,然后一路next,最后finish。
3.2:在父项目中配置模块
在myeureka的pom中添加如下内容:
<modules>
<module>my-enreka-server</module>
</modules>
3.3:依赖父项目
<parent>
<groupId>dongshi.daddy</groupId>
<artifactId>my-eureka</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
3.4:引入eureka-server依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
3.5:完整pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dongshi.daddy</groupId>
<artifactId>my-enreka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>my-enreka-server</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>dongshi.daddy</groupId>
<artifactId>my-eureka</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3.6:配置eureka的配置
server:
port: 8761
eureka:
instance:
hostname: localhost
client:
registerWithEureka: false
fetchRegistry: false
serviceUrl:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
application:
name: eurka-server
3.7:启用eureka
添加@EnableEurekaServer
:
@SpringBootApplication
@EnableEurekaServer
public class MyEnrekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(MyEnrekaServerApplication.class, args);
}
}
3.8:启用服务并测试
4:创建子项目myeureka-client
4.1:创建项目
鼠标选中父项目,new
->module
,选择左侧的Spring Initialzr
:
next后,选择java版本为8,type为maven,然后录入gav,然后一路next,最后finish。
4.2:在父项目中配置模块
在myeureka的pom中添加如下内容:
<modules>
<module>myeureka-client</module>
</modules>
4.3:依赖父项目
<parent>
<groupId>dongshi.daddy</groupId>
<artifactId>my-eureka</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
4.4:引入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
4.5:完整pom
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>dongshi.daddy</groupId>
<artifactId>myeureka-client</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>myeureka-client</name>
<description>Demo project for Spring Boot</description>
<parent>
<groupId>dongshi.daddy</groupId>
<artifactId>my-eureka</artifactId>
<version>1.0-SNAPSHOT</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
4.6:配置eureka的配置
server:
port: 8762
spring:
application:
name: dongshidaddy-first-eureka-client
eureka:
client:
serviceUrl:
defaultZone: http://localhost:8761/eureka/
除了端口号,还配置了eureka服务端的地址,从而可以向服务端注册自己对外提供服务。
4.7:测试
- 启动eureka的服务端
- 启动eureka的客户端
- 查看客户端注册信息日志
2020-10-23 11:16:25.920 INFO 49924 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_DONGSHIDADDY-FIRST-EUREKA-CLIENT/cj-PC:dongshidaddy-first-eureka-client:8762: registering service...
2020-10-23 11:16:26.001 INFO 49924 --- [ main] o.s.b.w.embedded.tomcat.TomcatWebServer : Tomcat started on port(s): 8762 (http) with context path ''
2020-10-23 11:16:26.002 INFO 49924 --- [ main] .s.c.n.e.s.EurekaAutoServiceRegistration : Updating port to 8762
2020-10-23 11:16:26.005 INFO 49924 --- [ main] d.d.m.MyeurekaClientApplication : Started MyeurekaClientApplication in 7.507 seconds (JVM running for 8.404)
2020-10-23 11:16:26.129 INFO 49924 --- [nfoReplicator-0] com.netflix.discovery.DiscoveryClient : DiscoveryClient_DONGSHIDADDY-FIRST-EUREKA-CLIENT/cj-PC:dongshidaddy-first-eureka-client:8762 - registration status: 204
- 查看服务端日志
2020-10-23 11:16:26.126 INFO 53072 --- [nio-8761-exec-2] c.n.e.registry.AbstractInstanceRegistry : Registered instance DONGSHIDADDY-FIRST-EUREKA-CLIENT/cj-PC:dongshidaddy-first-eureka-client:8762 with status UP (replication=false)
- 查看eureka注册信息