1.eureka服务器配置
1.maven
配置
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<relativePath/>
</parent>
<groupId>com.example</groupId>
<artifactId>eureka-server</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>eureka-server</name>
<properties>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.62</version>
</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>
2.启动类编写
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class EurekaServerApplication {
public static void main(String[] args) {
SpringApplication.run(EurekaServerApplication.class, args);
}
}
3.application.properties
配置
1.配置中不要使用
localhost
,全部使用域名,或者ip
2.注意
defaultZone
地址一定后面加上/eureka
,单词不能写错
spring.application.name=eureka-server
server.port=8761
# hostname不要使用localhost在host文件中配置 127.0.0.1
eureka.instance.hostname=eureka-01
#http格式为http://{本服务域名或者ip地址}:{本服务端口}/{可选}/eureka
eureka.client.service-url.defaultZone=https://eureka-01:8761/euraka
#取消服务器自我注册(单机版需要配置此参数)
eureka.client.register-with-eureka=false
#取消服务器检索(单机版本需要配置此参数)
eureka.client.fetch-registry=false
2.服务提供者与服务消费者配置
1.maven配置
- 父
pom
配置
<modelVersion>4.0.0</modelVersion>
<packaging>pom</packaging>
<groupId>org.example</groupId>
<artifactId>springcloud-parent</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.encoding>UTF-8</maven.compiler.encoding>
<java.version>1.8</java.version>
<spring-cloud.version>Hoxton.SR1</spring-cloud.version>
<spring-boot.version>2.2.4.RELEASE</spring-boot.version>
</properties>
<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>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.2.4.RELEASE</version>
<type>pom</type>
<scope>import</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
<optional>true</optional>
</dependency>
</dependencies>
</dependencyManagement>
-
子
pom
配置<parent> <groupId>org.example</groupId> <artifactId>springcloud-parent</artifactId> <version>1.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <dependencies> <dependency> <groupId>com.springcloud.api</groupId> <artifactId>springcloud-api</artifactId> <version>${project.version}</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build>
2.服务提供者和服务消费者
properties
配置消费者和提供者的配置除了应用名和端口不一样外,其他eureka配置完全一样
import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class ProviderApplication { public static void main(String[] args) { SpringApplication.run(ProviderApplication.class, args); } }
@RestController public class ServiceAController { @RequestMapping(value = "/sayHello/{name}", method = RequestMethod.GET) public String sayHello(@PathVariable("name") String name) { return "{'msg': 'hello, " + name + "'}"; } }
2.服务提供者和服务消费者properties
配置
消费者和提供者的配置除了应用名和端口不一样外,其他eureka配置完全一样
spring.application.name=euraka-provider
server.port=8082
#eureka服务器域名或者ip地址
eureka.instance.hostname=eureka-01
eureka.client.service-url.defaultZone=http://${eureka.instance.hostname}:8761/eureka/
3.服务提供者代码
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@SpringBootApplication
@EnableDiscoveryClient
public class ProviderApplication {
public static void main(String[] args) {
SpringApplication.run(ProviderApplication.class, args);
}
}
服务提供类
@RestController
public class ServiceAController {
@RequestMapping(value = "/sayHello/{name}",
method = RequestMethod.GET)
public String sayHello(@PathVariable("name") String name) {
return "{'msg': 'hello, " + name + "'}";
}
}
4.消费者代码
-
启动类
@SpringBootApplication @EnableEurekaClient public class ConsumerApplication { public static void main(String[] args) { SpringApplication.run(ConsumerApplication.class, args); } }
-
服务调用类
@RestController @Configuration public class UserController { @Bean @LoadBalanced public RestTemplate getRestTemplate() { return new RestTemplate(); } @RequestMapping(value = "/greeting/{name}", method = RequestMethod.GET) public String greeting(@PathVariable("name") String name) { RestTemplate restTemplate = getRestTemplate(); //直接使用http://{服务提供者应用名}/接口路径 访问 (无需使用服务提供者应用地址加端口) return restTemplate.getForObject("http://euraka-provider/sayHello/" + name, String.class); } }