springcloud gradle搭建 使用idea
搭建项目
搭建根项目
按照截图来,先建立一个根项目
建立子项目
先建立服务注册中心eueka
点击自己的项目右键 创建module
记得点击enable auto-import自动导包
在enueka gradle 写入下面这个配置导入相关包 (注意
group ‘com.rainteas’
version ‘1.0-SNAPSHOT’) 不要改
这是build.gradle
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group 'com.rainteas'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', 'Greenwich.SR1')
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
根据前几个步骤 再添加一个网关管理 gateway 如图
build.gradle 配置文件
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
apply plugin: 'io.spring.dependency-management'
group 'com.rainteas'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', 'Greenwich.SR1')
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-zuul'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
建立user 消费者如图
build.gradle
plugins {
id 'org.springframework.boot' version '2.1.3.RELEASE'
id 'java'
}
group 'com.rainteas'
version '1.0-SNAPSHOT'
sourceCompatibility = 1.8
repositories {
mavenCentral()
}
ext {
set('springCloudVersion', 'Greenwich.SR1')
}
dependencies {
implementation 'org.springframework.cloud:spring-cloud-starter-netflix-eureka-server'
implementation 'org.springframework.cloud:spring-cloud-starter-openfeign:2.0.2.RELEASE'
compileOnly 'org.projectlombok:lombok'
testImplementation 'org.springframework.boot:spring-boot-starter-test'
testCompile group: 'junit', name: 'junit', version: '4.12'
}
dependencyManagement {
imports {
mavenBom "org.springframework.cloud:spring-cloud-dependencies:${springCloudVersion}"
}
}
配置eureka
自己创建一个application.yml 将这个写进去
server:
port: 8762
eureka:
client:
#表明自己属于服务中心主体
registerWithEureka: false #是否将自身注册
fetchRegistry: false #表示自己就是服务注册中心,我的职责就是为父服务实例,并不需要去检索服务
server:
enable-self-preservation: false
配置gateway
同上 建立一个application.yml
spring:
application:
name: test-gateway
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka
instance:
instance-id: test-gateway #自定义服务名称信息
prefer-ip-address: true #访问路径可以显示ip地址 #注册服务使用ip地址
server:
port: 8080
zuul:
routes:
testProject:
path: /testShop/**
serviceId: test-shop
testUser:
path: /testUser/**
serviceId: test-user
配置消费者 user
同上
spring:
application:
name: test-user
server:
port: 8081
eureka:
client:
service-url:
defaultZone: http://localhost:8762/eureka
注意以上application 名字,由于我是做教程(用了2份做的),有几个spring.application.name 不太一样,例如test-user 和user 改成一样的
开启enreka
开启网关和enueka
消费者
这样就完成了 下面是例子 testShop是网关,后面是方法地址
http://localhost:8080/testShop/shophello
两个服务进行通信
先写一个接口
把projectService 注入进去
然后直接调用即可