[b]
spring cloud feign方式使用服务[/b]
feign采用的是接口加注解
feign 整合了ribbon(有提供负载均衡功能)
spring cloud feign方式使用服务[/b]
feign采用的是接口加注解
feign 整合了ribbon(有提供负载均衡功能)
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.midea</groupId>
<artifactId>base</artifactId>
<version>1.0-SNAPSHOT</version>
<packaging>jar</packaging>
<name>base</name>
<!-- 设定仓库,按设定顺序进行查找. -->
<!--<repositories> <repository> <id>public</id> <name>Team Nexus Repository</name>
<url>http://10.33.183.113:8081/nexus/content/groups/public</url> <snapshots>
<enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots>
</repository> </repositories> <pluginRepositories> <pluginRepository> <id>public</id>
<name>Team Nexus Repository</name> <url>http://10.33.183.113:8081/nexus/content/groups/public</url>
<snapshots> <enabled>true</enabled> <updatePolicy>always</updatePolicy> </snapshots>
</pluginRepository> </pluginRepositories> -->
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<java.version>1.8</java.version>
</properties>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.5.2.RELEASE</version>
</parent>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-dependencies</artifactId>
<version>Dalston.SR1</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<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>
<scope>test</scope>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<version>2.4.0</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger-ui</artifactId>
<version>2.4.0</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-log4j2</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-logging</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
</build>
</project>
server.port=8765
#logging.pattern.level=INFO
#服务器路径
server.context-path=/feign
#
#eureka.instance.hostname=localHost
#表示是否注册自身到eureka服务器,因为当前这个应用就是eureka服务器,没必要注册自身,所以这里是false。
#eureka.client.registerWithEureka=false
#fetchRegistry表示是否从eureka服务器获取注册信息,同上,这里不需要
#eureka.client.fetchRegistry=false
#设置eureka服务器所在的地址,查询服务和注册服务都需要依赖这个地址。
#eureka.client.serviceUrl.defaultZone=http://${eureka.instance.hostname}:${server.port}/eureka/
eureka.client.serviceUrl.defaultZone=http\://localhost\:8761/eurekaServer/eureka/
spring.application.name=feign
package com.Service;
import org.springframework.cloud.netflix.feign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
@FeignClient(value = "eureka-Client") //服务名字
public interface CallService {
@RequestMapping(value = "/eurekaClient/Test/test",method = RequestMethod.GET)
String callService();
}
package com.controller;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;
import com.Service.CallService;
import io.swagger.annotations.Api;
@Api(value = "/FeignTest", description = "测试接口", tags = "TestController")
@RequestMapping("/FeignTest")
@RestController
public class TestController {
final static Logger logger = LogManager.getLogger(TestController.class);
@Autowired
CallService callService;
@RequestMapping(value = "/test", method = RequestMethod.GET)
public String test() {
logger.info("test");
// 调用服务进行远程调用
String temp = callService.callService();
logger.info("temp == " + temp);
return temp;
}
}
package com;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.netflix.feign.EnableFeignClients;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;
@SpringBootApplication //spring boot 开启应用
//@EnableDiscoveryClient //Discovery Service”有多种实现,比如:eureka, consul, zookeeper。
@EnableEurekaClient //只能为eureka作用
@EnableFeignClients //Feign
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}