在cloud项目中引入jar包
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-hystrix</artifactId>
</dependency>
在启动类上加上feign启动扫描注解
@EnableAsync
@SpringCloudApplication
@EnableDiscoveryClient
@EnableFeignClients
@ComponentScan(basePackages = {"cn.edu.fudan.app", "cn.edu.fudan.common.bean"})
@IntegrationComponentScan
@EnableSwagger2
public class AppApplication extends SpringBootServletInitializer{
public static void main(String[] args) {
SpringApplication.run(AppApplication.class, args);
}
}
@EnableFeignClients //启动
@SpringCloudApplication //cloud注解
创建一个映射类
@FeignClient(name = "fudan-device-service", fallback = CarbonDeviceServiceFallbackImpl.class)
public interface CarbonDeviceService {
@RequestMapping("/device/list")
R<Map<String, Object>> list(@RequestBody Map<String,Object> params);
@FeignClient
name:指向的哪个项目
fallback : 实现类的class
@RequestMapping(“/device/list”)
指向的接口:一般在controller的接口
list方法名必须一致
方法和参数一致
实现类
@Service
public class CarbonDeviceServiceFallbackImpl implements CarbonDeviceService {
private Logger logger = LoggerFactory.getLogger(this.getClass());
@Override
public Map<String, Object> saveDevice(Map<String, Object> map) {
logger.error("调用{}异常:{}", "saveDevice", map);
return null;
}
加上注解@service 方便扫描出来,进行引用
可以直接引用
@Autowired
private CarbonDeviceService carbonDeviceService;