第一步、在当前项目pom.xml中添加spring-cloud-starter-feign的jar包
<dependencies>
<!-- ribbon -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka</artifactId>
<version>1.3.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-ribbon</artifactId>
<version>1.3.4.RELEASE</version>
</dependency>
<!-- feign调用 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.3.4.RELEASE</version>
</dependency>
</dependencies>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-parent</artifactId>
<version>Brixton.SR5</version>
<type>pom</type>
</dependency>
</dependencies>
第二步:在application.properties中配置eureka参数
eureka.client.serviceUrl.defaultZone=http://localhost:7777/eureka
第三步:创建cn.xxx.xxx.remote包,在创建定义xxxRemote远程Feign接口,追加@FeignClient标记
@FeignClient(name="SUBJECT-SERVICE")//指定注册服务名
public interface SubjectRemote {
//方法参考Controller定义编写
@RequestMapping(value="/subject",method=RequestMethod.GET)
public ResponseResult loadSubjects();
}
第四步:直接在Controller中注入SubjectRemote (远程Feign对象调用远程服务)接口
@Controller
@RequestMapping("/exam")
public class ExamController {
@Autowired
private SubjectRemote subjectRemote;
@RequestMapping("/home.html")
public String home(String token,ModelMap model){
//调用http://localhost:8885/subject请求获取所有学科信息
//url规则: http://注册服务名/请求名
ResponseResult result = subjectRemote.loadSubjects();
……
//将数据存入Model
model.put("result", result);
return "home";//templates/home.html
}
}
第五步、添加@EnableFeignClients和@EnableDiscoveryClient标记到启动类
@EnableFeignClients//启用Feign接口模式调用服务
@EnableDiscoveryClient//启用服务注册和查找
@SpringBootApplication
public class ExamWebBootApplication {
public static void main(String[] args){
SpringApplication.run(ExamWebBootApplication.class, args);
}
}
第六步、启动各服务测试