第一:创建父项目,普通java项目;
1 直接选择 next
2 填写项目名称,选择项目地址
3 创建完项目后:配置 pom.xml
<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.SR1</spring-cloud.version>
<springboot.version>2.0.5.RELEASE</springboot.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-dependencies</artifactId>
<version>${springboot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
第二:创建注册中心
1 在父项目上创建module
2 直接进入next
3 名字可以自定义
配置 pom.xml
<artifactId>eureka_server</artifactId>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--Eureka服务端的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
</dependency>
</dependencies>
4 在eureka项目中创建启动类
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
@SpringBootApplication
@EnableEurekaServer
public class Application_Eureka {
public static void main(String[] args){
SpringApplication.run(Application_Eureka.class);
}
}
5 在项目路径 src\main\resources 创建配置文件:application.yml
server:
port: 9001
eureka:
instance:
hostname: 127.0.0.1
client:
fetch-registry: false
register-with-eureka: false
6 记得配置 vm 参数
-Xms512m -Xmx512m -XX:PermSize=1024M -XX:MaxPermSize=1024m
7 启动:eureka_server 主函数;
第三:创建服务器提供者
1 创建项目方式和eureka一致,在父项目下创建子项目,直接配置pom.xml
2 pom.xml 配置
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<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>
</dependencies>
3 创建启动类,提供服务
启动类
@SpringBootApplication
@EnableEurekaClient
public class Application_Provider {
public static void main(String[] args){
SpringApplication.run(Application_Provider.class);
}
}
服务器
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RequestMapping("provider")
public class ProviderController {
@RequestMapping("get")
public String getData(){
return "提供了数据";
}
}
4 创建配置文件application.yml
server:
port: 8008
spring:
application:
name: TEST-PROVIDER #服务名称,随意取
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka #注册到Eureka的地址
5.(测试)启动项目,访问 127.0.0.1:8001/provider/get
第四:创建消费项目
1 创建方式与生产项目一致
2 配置xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
</dependencies>
3 创建启动类和消费接口
启动类:
@SpringBootApplication
public class Application_Consumer {
public static void main(String[] args){
SpringApplication.run(Application_Consumer.class);
}
}
消费接口 :
@RestController
@RequestMapping("consumer")
public class ConsumerController {
//资源路径
private final String url = "http://127.0.0.1:8008/provider/get";
@RequestMapping("get")
public String get(){
RestTemplate template = new RestTemplate();
String data = template.getForObject(url, String.class);
return data;
}
}
4 配置文件application.yml(名称必须),配置端口
server:
port: 9001
5 启动项目,访问: 127.0.0.1:9001/consumer/get 成功获取到了数据
5 创建spring cloud的网关
1.创建子项目,方式和上面的一致
2.配置pom.xml
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<!--Eureka的客户端依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--Zuul网关的依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-zuul</artifactId>
</dependency>
</dependencies>
3 创建启动类
package com.pooj.zuul;
@SpringBootApplication
@EnableEurekaClient
@EnableZuulProxy
public class Application_Zuul {
public static void main(String[] args){
SpringApplication.run(Application_Zuul.class);
}
}
4 配置文件application.yml
server:
port: 9527
spring:
application:
name: ZUUL-SERVER #Zuul网关在Eureka的服务名称,随便取
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka #Eureka的注册地址
zuul:
routes:
provider.serviceId: TEST-PROVIDER #没有提示,自己取名称,值为服务的名称
5 .启动网关,通过网关访问服务提供
规则:127.0.0.1:9527/网关服务名称(小写)/服务提供者名称(小写)/服务路径
例:127.0.0.1:9527/zuul-server/test-provider/provider/get
6 . 在配置文件中继续配置,简化路径访问
server:
port: 9527
spring:
application:
name: ZUUL-SERVER
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
zuul:
routes:
provider.serviceId: TEST-PROVIDER
provider.path: /pooj/** #匹配指定的路径,资源匹配的路径才会拦截,转发
7 重新启动后测试
原来路径:127.0.0.1:9527/zuul-server/test-provider/provider/get
网关访问路径变为: 127.0.0.1:9527/pooj/provider/get
8 屏蔽掉原始资源(提供者)访问地址
server:
port: 9527
spring:
application:
name: ZUUL-SERVER
eureka:
client:
service-url:
defaultZone: http://127.0.0.1:7001/eureka
zuul:
routes:
provider.serviceId: TEST-PROVIDER
provider.path: /pooj/** #匹配指定的路径,资源匹配的路径才会拦截,转发
ignored-services: "*" #忽略直接使用服务名 *忽略所有的服务
prefix: /server #统一给访问前缀