栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

数据交互: Springcloud -feign 组件的使用

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

数据交互: Springcloud -feign 组件的使用

数据交互: feign
        1) 在consumer项目中的pom, 添加feign组件的依赖

 
        
            com.alibaba.cloud
            spring-cloud-starter-alibaba-nacos-discovery
        


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


        2) 在consumer项目中的启动类上, 添加@EnableFeignClients , @EnableDiscoveryClient,                 @SpringBootApplication

启动类示例:

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.circuitbreaker.EnableCircuitBreaker;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;

@SpringBootApplication
@EnableDiscoveryClient
@EnableFeignClients
@EnableCircuitBreaker
public class UserConsumerApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserConsumerApplication.class, args);
    }

}


        3) 在consumer项目中的创建与provider项目对应的接口,
            接口中的方法声明(含注解部分)必须与对应的
            provider项目的controller中的方法声明一致

示例: 

@Service
@FeignClient(value = "user-provider")
public interface UserPorvider {

    @PostMapping("save")
    public Dto save(@RequestBody User user);

    @PostMapping("remove")
    public Dto remove(@RequestBody User user);

    @PostMapping("modify")
    public Dto modify(@RequestBody User user);

    @PostMapping("unique")
    public Dto unique(@RequestBody User user);

    @PostMapping("query")
    public Dto query(@RequestBody Map map);

    @PostMapping("ribbon")
    public String testRibbon(@RequestParam("count") int count);
}


        4) 在consumer项目中的provider接口上,
            添加@Service, 添加@FeignClient(value = "provider 的application name")

示例:

@Service
@FeignClient(value = "user-provider", fallback = UserProviderImpl.class)
public interface UserPorvider {

    @PostMapping("save")
    public Dto save(@RequestBody User user);

    @PostMapping("remove")
    public Dto remove(@RequestBody User user);

    @PostMapping("modify")
    public Dto modify(@RequestBody User user);

    @PostMapping("unique")
    public Dto unique(@RequestBody User user);

    @PostMapping("query")
    public Dto query(@RequestBody Map map);

    @PostMapping("ribbon")
    public String testRibbon(@RequestParam("count") int count);
}


        5) 在consumer项目中的controller中, 声明provider接口对象并注入实例

示例:

@RestController
public class UserController {

    @Autowired
    private UserPorvider userPorvider;

    @PostMapping("login")
    public Dto login(User user){
        System.out.println(user);

        Dto dto = userPorvider.unique(user);

        if (dto.getSuccess().equals("false") && dto.getCode().equals("200")){
            dto.setMsg("用户名或密码错误!");
        }

        return dto;
    }
}

        6) 在provider项目中的启动类上添加注解:
                @SpringBootApplication
                @EnableDiscoveryClient
                @MapperScan("com.dsed.dao")   注:括号中为dao包

示例:

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

@SpringBootApplication
@EnableDiscoveryClient
@MapperScan("com.szxs.dao")
public class UserProviderApplication {

    public static void main(String[] args) {
        SpringApplication.run(UserProviderApplication.class, args);
    }

}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/712988.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号