springcloudfeign 원격 호출 서비스 실천

3055 단어

1. 다음 단계는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. 클라이언트 - 소비자
주석: 제품-서비스는 이곳에서 소비자 역할을 하고 대외적으로 서비스를 제공할 때도 공급자를 충당할 수 있습니다.모든 서비스는 제공자일 수도 있고 소비자일 수도 있다.공급자와 소비자는 서로 호출할 수 있다
// - (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 , 

    org.springframework.cloud
    spring-cloud-starter-openfeign


 
5. 테스트 단계
 :register( ) -> provider( :user-service) -> consumer( :product-service)
 :http://localhost:9090

좋은 웹페이지 즐겨찾기