SpringCloud项目之Feign搭建
从零搭建一个SpringCloud项目之Feign搭建
工程简述
目的:实现trade服务通过feign调用user服务的功能。因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要的东西到user-api工程。避免trade直接依赖user导致依赖多余的东西。
一、创建User接口工程user-api
新建一个module,取名为study-user-api
引入pom文件
org.springframework.cloudspring-cloud-starter-openfeign
创建一个User实体类
编写一个UserApi接口,value里的study-user对应后面user实现工程的spring.application.name的值
@FeignClient(value ="study-user")publicinterfaceUserApi{@RequestMapping(value ="/getUserById",method = RequestMethod.GET)User getUserById(Integer id);}
二、创建User实现工程
创建一个module用于对user接口提供实现,项目名为study-user
加入pom依赖
org.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.bootspring-boot-starter-web<!-- 本地依赖-->study-user-apicom.mmc1.0-SNAPSHOT
配置文件
server.port=8003#注册到eureka服务端的微服务名称spring.application.name=study-user#注册到eureka服务端的地址#eureka.client.service-url.defaultZone=http://localhost:9000/eureka/security.login.username=rootsecurity.login.pass=123456789eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/#点击具体的微服务,是否显示ipeureka.instance.prefer-ip-address=trueeureka.instance.instance-id=study-user-8003
写user接口实现,一个UserController
@RestController@RequestMapping("/user")publicclassUserController{@RequestMapping("/getUserById")publicUser getUserById(Integer id){ User user = new User(); user.setId(1); user.setName("小明");returnuser; }}
三、创建交易工程
新建一个module,项目名为study-trade
引入pom依赖
org.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.bootspring-boot-starter-weborg.springframework.cloudspring-cloud-starter-openfeign<!-- 本地依赖-->study-user-apicom.mmc1.0-SNAPSHOT
编写配置文件
server.port=8005#注册到eureka服务端的微服务名称spring.application.name=study-trade#注册到eureka服务端的地址#eureka.client.service-url.defaultZone=http://localhost:9000/eureka/security.login.username=rootsecurity.login.pass=123456789eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/#点击具体的微服务,是否显示ipeureka.instance.prefer-ip-address=trueeureka.instance.instance-id=study-trade-8005
写controller调用user服务
/** *@description: *@author: mmc *@create: 2020-04-05 11:41 **/@RestController@RequestMapping("/trade")publicclassTradeController{@AutowiredprivateUserApi userApi;@RequestMapping(value ="/testTrade/{userid}",method = RequestMethod.GET)publicString testTrade(@PathVariableInteger userid){ User user= userApi.getUserById(userid); String name = user.getName(); System.out.println("用户"+name+"下单成功....");return"用户"+name+"下单成功"; }}
启动类配置启用feign注解
@SpringBootApplication@EnableFeignClients(basePackages ="com.mmc.user")public class TradeApplication {publicstaticvoidmain(String[] args) {SpringApplication.run(TradeApplication.class); }}
测试
依次启动eureka Server,user工程,trade工程。