首頁 > 軟體

記一次Feign中實現傳實體Bean的問題

2022-03-16 19:00:24

Feign如何傳實體Bean

需要加一個@RequestBody序列化物件

    /**
     * 新增
     */
    @PostMapping("saveOrder")
    @ResponseBody
    public void saveOrder(@RequestBody OrderBean orderBean) {
        userService.saveOrder(orderBean);
    }

介面接收請求也要加一個@RequestBody註解 

    /**
     * 新增
     * @param orderBean
     */
    @PostMapping("saveOrder")
    public void saveOrder(@RequestBody OrderBean orderBean);

Feign注入Bean為null,啟動報錯

主要是feign版本和swagger版本衝突,本專案spring cloud 版本為 Finchley.M8

swagger衝突版本

        <!-- swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.2.2</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.2.2</version>
        </dependency>

解決方案

        <!-- swagger2 -->
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger2</artifactId>
            <version>2.5.0</version>
        </dependency>
        <dependency>
            <groupId>io.springfox</groupId>
            <artifactId>springfox-swagger-ui</artifactId>
            <version>2.5.0</version>
        </dependency>

feign Service案例

@FeignClient(name  = "service-weixin",fallback = OAuthServiceFallBack.class, configuration = FeignConfig.class)
public interface OAuthService {
     @RequestMapping(value = "/oauth/getOauth2AuthorizationUrl", method = RequestMethod.GET)
     ResultBean<String> getOauth2AuthorizationUrl(@RequestParam("url")String url);
}

controller注入

@RestController
@RequestMapping("/ticket")
public class TicketController {
    @Autowired
    private TicketService ticketService;
    @Autowired
    private OAuthService oAuthService;
    ...

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com