服务消费者
1.引入jar包
<!-- https://mvnrepository.com/artifact/org.springframework.cloud/spring-cloud-starter-feign -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-feign</artifactId>
<version>1.4.6.RELEASE</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>18.0</version>
</dependency>
<dependency>
<groupId>com.netflix.archaius</groupId>
<artifactId>archaius-core</artifactId>
<version>0.7.6</version>
</dependency>
如果只引入第一个jar包,调用的时候会报错
2.修改启动类
@EnableDiscoveryClient
public class LightassetmanApplication {
public static void main(String[] args) {
SpringApplication.run(LightassetmanApplication.class, args);
}
@Bean
@LoadBalanced
public RestTemplate restTemplate(){
return new RestTemplate();
}
}
我只把新加的注解写上去了
3.服务调用
@Autowired private RestTemplate template;
不传参数
boolean flag1=template.getForObject("http://lightfrontabt/GZILSystem/gzilMan/taskDual/isCacheRunning",Boolean.class);
简单参数
String msg = template.getForObject("http://lightfrontabt/GZILSystem/gzilMan/taskDual/test"+ "?name={name}", String.class,name);
复杂参数
short funccode=(short)171;
MultiValueMap params=new LinkedMultiValueMap();
params.addAll("tmnlAssetNos", tmnlAssetNos);
params.add("funccode", funccode);
params.addAll("paramItems", paramItems);
String url="http://lightfrontabt/GZILSystem/gzilMan/taskDual/qetTermParamTaskResult";
taskId = template.postForObject(url,params, Long.class);
切记,这里面传过去的都是list
服务提供者
1.接收参数
@RequestMapping("/qetTermParamTaskResult")
public long qetTermParamTaskResult(@RequestParam MultiValueMap params) {
List tmnlAssetNos= (List) params.get("tmnlAssetNos");
List<ParamItem> paramItems= (List<ParamItem>) params.get("paramItems");
List funccodes=(List)params.get("funccode");
Short funccode=Short.parseShort(funccodes.get(0).toString());
}
其他的不许配置,这是比较简单的调用方式