前段时间,撸主为了调用小黄图API特意引入的Feign,这显然不是最优雅的使用方式。但是对于大部分中小公司来说,服务已经拆了辣么多了,基本能满足需求就可以了,什么熔断、集群啊可以都先一边靠靠。
这里先撸一个最贱单的例子分享给大家。
组件- Spring-Boot 2.2.0.RELEASE
- Spring-Cloud Greenwich.SR3
- Spring-Cloud-Alibaba 2.1.0.RELEASE
- Nacos 注册中心
- Feign HTTP客户端
说明一下,Spring Cloud Alibaba 已在2019年8月1日顺利毕业,并在 Spring 官方正式挂牌,挂牌成功后的最新版本是2.1.0。
主项目
nacos-feign-server
nacos-feign-client
1.8
2.2.0.RELEASE
Greenwich.SR3
2.1.0.RELEASE
org.springframework.boot
spring-boot-starter-web
org.springframework.cloud
spring-cloud-starter-alibaba-nacos-discovery
org.springframework.cloud
spring-cloud-starter-openfeign
org.springframework.boot
spring-boot-dependencies
${spring-boot.version}
pom
import
org.springframework.cloud
spring-cloud-dependencies
${spring-cloud.version}
pom
import
com.alibaba.cloud
spring-cloud-alibaba-dependencies
${spring-cloud-alibaba.version}
pom
import
服务端
application.properties 配置:
# 项目contextPath 科帮网https://blog.52itstyle.vip server.servlet.context-path=/ # 服务端口 server.port=8080 # session最大超时时间(分钟),默认为30 server.session-timeout=60 # tomcat最大线程数,默认为200 server.tomcat.max-threads=100 # tomcat的URI编码 server.tomcat.uri-encoding=UTF-8 # Nacos 注册中心 spring.application.name = nacos-discovery-server spring.cloud.nacos.discovery.server-addr = 47.104.197.9:8848
简单的服务提供接口:
@SpringBootApplication
@RestController
public class Application {
private static final Logger logger = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("nacos-discovery-server启动");
}
@GetMapping("getMessage")
public String getMessage(){
return "来调戏我啊!!!";
}
}
客户端
application.properties 配置:
# 项目contextPath 科帮网https://blog.52itstyle.vip server.servlet.context-path=/ # 服务端口 server.port=8081 # session最大超时时间(分钟),默认为30 server.session-timeout=60 # tomcat最大线程数,默认为200 server.tomcat.max-threads=100 # tomcat的URI编码 server.tomcat.uri-encoding=UTF-8 # Nacos 注册中心 spring.application.name = nacos-discovery-client spring.cloud.nacos.discovery.server-addr = 47.104.197.9:8848
配置客户端调用接口:
@FeignClient(value = "nacos-discovery-server")
public interface FeignClientService {
@RequestMapping(value="/getMessage")
String getMessage();
}
客户端调用示例:
@SpringBootApplication
@RestController
@EnableFeignClients
public class Application {
private static final Logger logger = LoggerFactory.getLogger(Application.class);
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
logger.info("nacos-discovery-client启动");
}
@Autowired
private FeignClientService feignClientService;
@GetMapping("getMessage")
public String getMessage(){
return feignClientService.getMessage();
}
}
测试服务
分别启动 feign-server 和 feign-client,然后登录Nacos控制台,如果出现以下两个服务说明配置成功。
客户端访问 http://localhost:8081/getMessage 如果返回来调戏我啊说明调用成功。
源码https://gitee.com/52itstyle/Spring-Cloud-Alibaba
参考https://blog.52itstyle.vip/archives/5026/
https://spring.io/projects/spring-cloud-alibaba
https://nacos.io/zh-cn/docs/quick-start.html



