springcloud feign遠程調用服務實踐


 一、下面步驟是實現feign遠程服務調用

1、服務器-提供者

//服務器-提供者(provider),項目ID:user-service
@RestController
@RequestMapping("user")
class UserController implements  UserFacade{

    @Autowired
    @Qualifier("userServiceImpl")
    UserService userService;

    @RequestMapping("getUserById")
    @Override
    public User getUserById(@RequestParam("userId") String userId) {
        return userService.getUserById(userId);
    }

    @RequestMapping("saveUser")
    @Override
    public User saveUser(@RequestBody User user) {
        return userService.saveUser(user);
    }
}


interface UserService {
     User getUserById(String userId);
     User getUserByUserName(String userName);
     User saveUser(User user);
}

@Service
class UserServiceImpl implements UserService {

    @Override
    public User getUserById(String userId) {
        System.out.println("根據用戶ID獲取用戶對象");
        return null;
    }

    @Override
    public User getUserByUserName(String userName) {
        System.out.println("根據用戶名獲取用戶對象");
        return null;
    }

    @Override
    public User saveUser(User user) {
        System.out.println("保存用戶對象");
        return null;
    }

}

 

2、客戶端-消費者

注釋:product-service在此處是充當消費者角色,當它對外提供服務也可以充當提供者。所有一個服務既可以是提供者也可以是消費者。提供者與消費者可以相互調用

//客戶端-消費者(consumer),項目ID:product-service
//客戶端消費提供端提供的用戶查詢和保存功能

/**
 * @ClassName ProductController
 * @Description feign的調用
 * @Author Neal
 * @Date 2019/4/29 14:47
 * @Version 1.0
 */
@RestController
@RequestMapping("product")
 class ProductController{

    @Autowired
    private UserFeign userFeign;

    @RequestMapping("getUserProduct")
    public String getUserProduct(@RequestParam("userId") String userId) {
        //遠程調用獲取用戶數據
        User user = userFeign.getUserById(userId);
        //下面獲取用戶購買產品代碼省略....
        return null;
    }

}


//遠程調用接口
@FeignClient(name = "user-service")
 interface UserFeign extends UserFacade{

    //這方法可以省略,因為集成接口了
    @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE)
    User getUserById(String userId);

    //這方法可以省略,因為集成接口了
    @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE)
    User saveUser(@RequestBody User user);
}

  

3、公共接口部分

//公共接口(提供端和消費端都依賴的接口)
interface UserFacade {
    @GetMapping(value = "/user/getUserById",consumes = MediaType.APPLICATION_JSON_VALUE)
    User getUserById(String userId);

    @PostMapping(value = "/user/saveUser",consumes = MediaType.APPLICATION_JSON_VALUE)
    User saveUser(@RequestBody User user);
}

  

4、配置

4.1、客戶端pom.xml添加依賴jar

在客戶端pom.xml文件中,增加相關依賴
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>

 

5、測試步驟

項目啟動順序:register(注冊中心) -> provider(提供者:user-service) -> consumer(消費者:product-service)
啟動完成后查看服務是否已經注冊上注冊中心:http://localhost:9090

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM