# 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();
}
}
```
---