FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.


我在練習微服務的時候發現了一個很奇怪的事情。在用openFeign的時候報了一個異常,花了我半天的時間,最后問題解決了。代碼如下:

這個是被調用的控制層代碼

@RestController
@Slf4j
public class PaymentController {
    @Resource
    private PaymentService paymentService;

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/payment/hystrix/ok/{id}")
    public String paymentInfo_ok(@PathVariable Integer id){
        String result = paymentService.paymentInfo_ok(id);
        log.info("*******result: "+ result);
        return result;
    }

    @GetMapping("/payment/hystrix/timeout/{id}")
    public String paymentInfo_Timeout(@PathVariable Integer id){
        String result = paymentService.paymentInfo_Timeout(id);
        log.info("*******result: "+ result);
        return result;
    }
}

  下面是調用控制層的接口:

@Component
@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT")
public interface PaymentHystrixService {

    @GetMapping("/payment/hystrix/ok/{id}")
    public String paymentInfo_ok(@PathVariable Integer id);

    @GetMapping("/payment/hystrix/timeout/{id}")
    public String paymentInfo_Timeout(@PathVariable Integer id);
}

  這時就會報一個錯誤,FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: PathVariable annotation was empty on param 0.

一般來說@PathVariable 如果是一個參數的話,是可以省略的嗎?我啟動被調用的控制層都沒問題。然后啟動調用的服務,然后報錯。

之后我一點點去看,發現可能是@PathVariable的問題。

我就奇怪了,為啥會報錯。當然如果把這個注解刪了,能啟動但是報500錯誤。

最后正確代碼提上:

@Component
@FeignClient(value = "CLOUD-PROVIDER-HYSTRIX-PAYMENT")
public interface PaymentHystrixService {
    /*
    * 我發現了一個很奇怪的現象,就是如果@PathVariable后面沒有加參數的話,就會報錯。
    * */

    @GetMapping("/payment/hystrix/ok/{id}")
    public String paymentInfo_ok(@PathVariable("id") Integer id);

    @GetMapping("/payment/hystrix/timeout/{id}")
    public String paymentInfo_Timeout(@PathVariable("id") Integer id);
}

  


免責聲明!

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



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