# not-spring-cloud-client **Repository Path**: oneal/not-spring-cloud-client ## Basic Information - **Project Name**: not-spring-cloud-client - **Description**: 非spring cloud项目调用spring cloud服务 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2018-10-12 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README ## 非spring cloud项目调用Eureka的服务 > 本项目基本说明:通过Feign 对以下第4步骤设置的客户端接口 创建代理对象,然后把代理对象注册到spring容器中,在第5步骤可以直接对接口注入使用。 #### 1、依赖引入 ```xml com.scallop.qf.cloud scallop-eureka-client 1.0 ``` #### 2、配置eureka-client配置文件 - 新建,比如命名qf-eureka-client.properties `这个文件名前缀在第3步骤配置` - 编辑内容如下: ```properties #################################### ## ribbon 配置 #################################### ## ribbon配置 , 可根据自己需要引入的服务名类配置。 eg. key: "服务名.ribbon.xxxx"。 ## myclient对应的微服务名 #myclient.ribbon.DeploymentContextBasedVipAddresses=S3 # ## 固定写法,myclient使用的ribbon负载均衡器 #myclient.ribbon.NIWSServerListClassName=com.netflix.niws.loadbalancer.DiscoveryEnabledNIWSServerList # ## 每分钟更新myclient对应服务的可用地址列表 #myclient.ribbon.ServerListRefreshInterval=60000 ##################################### ## eureka-client配置 ##################################### # 控制是否注册自身到eureka中。这里填false eureka.registration.enabled=false # eureka相关配置 eureka.preferSameZone=true eureka.shouldUseDns=false eureka.serviceUrl.default=http://10.20.5.84:8889/eureka eureka.decoderName=JacksonJson #eureka client刷新本地缓存时间,默认30s eureka.client.registryFetchIntervalSeconds=3 ``` #### 3、配置代理注入 - 新建applicationContext-eureka.xml文件 - 添加内容如下: ```xml ``` #### 4、设置客户端 > 这里只有`@QFEurekaClientConf`注解是本项目扩展的,其他的都是feign自带的配置。 ```java /** * Copyright (c) 2018 Sohu. All Rights Reserved */ import com.qf.exam.entity.TestUser; import com.scallop.qf.cloud.annotation.QFEurekaClientConf; import feign.Headers; import feign.RequestLine; import java.util.List; // service-provider : spring cloud服务在eureka上注册的服务名 @QFEurekaClientConf("service-provider") public interface TestConsumer { // get请求, "/hello" 是service-provider的暴露的http接口。 @RequestLine("GET /hello") public List getMessage(); // post请求 @RequestLine("POST /hello2") // 设置header @Headers("Content-Type: application/json") public List getMessage(TestUser one); } /* public class TestUser { private String name; private String id; public String getName() { return name; } public void setName(String name) { this.name = name; } public String getId() { return id; } public void setId(String id) { this.id = id; } } */ ``` #### 5、调用服务 > 直接注入接口即可。`注意`:如果服务不可用,调用客户度会返回null。 ```java @Service public XxxService{ @Autowired private TestConsumer testConsumer; public String test1(){ return testConsumer.getMessage(); } } ``` ---