从零搭建一个SpringCloud项目之Feign搭建

简介:

从零搭建一个SpringCloud项目之Feign搭建

工程简述

目的:实现trade服务通过feign调用user服务的功能。因为trade服务会用到user里的一些类和接口,所以抽出了其他服务需要的东西到user-api工程。避免trade直接依赖user导致依赖多余的东西。

一、创建User接口工程user-api
新建一个module,取名为study-user-api
引入pom文件

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>
</dependencies>

创建一个User实体类
编写一个UserApi接口,value里的study-user对应后面user实现工程的spring.application.name的值
@FeignClient(value = "study-user")
public interface UserApi {

@RequestMapping(value = "/getUserById",method = RequestMethod.GET)
User getUserById(Integer id);

}

二、创建User实现工程
创建一个module用于对user接口提供实现,项目名为study-user
加入pom依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>

    <!--  本地依赖-->
    <dependency>
        <artifactId>study-user-api</artifactId>
        <groupId>com.mmc</groupId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>

配置文件
server.port=8003

注册到eureka服务端的微服务名称

spring.application.name=study-user

注册到eureka服务端的地址

eureka.client.service-url.defaultZone=http://localhost:9000/eureka/

security.login.username=root
security.login.pass=123456789
eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/

点击具体的微服务,是否显示ip

eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=study-user-8003
写user接口实现,一个UserController
@RestController
@RequestMapping("/user")
public class UserController {

@RequestMapping("/getUserById")
public User getUserById(Integer id){
    User user = new User();
    user.setId(1);
    user.setName("小明");
    return user;
}

}
三、创建交易工程
新建一个module,项目名为study-trade
引入pom依赖

        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <!--  本地依赖-->
    <dependency>
        <artifactId>study-user-api</artifactId>
        <groupId>com.mmc</groupId>
        <version>1.0-SNAPSHOT</version>
    </dependency>

编写配置文件
server.port=8005

注册到eureka服务端的微服务名称

spring.application.name=study-trade

注册到eureka服务端的地址

eureka.client.service-url.defaultZone=http://localhost:9000/eureka/

security.login.username=root
security.login.pass=123456789
eureka.client.service-url.defaultZone=http://${security.login.username}:${security.login.pass}@localhost:9000/eureka/

点击具体的微服务,是否显示ip

eureka.instance.prefer-ip-address=true
eureka.instance.instance-id=study-trade-8005
写controller调用user服务
/**

  • @description:
  • @author: mmc
  • @create: 2020-04-05 11:41
    **/

@RestController
@RequestMapping("/trade")
public class TradeController {

@Autowired
private UserApi userApi;

@RequestMapping(value = "/testTrade/{userid}",method = RequestMethod.GET)
public String testTrade(@PathVariable Integer userid){
    User user= userApi.getUserById(userid);
    String name = user.getName();
    System.out.println("用户"+name+"下单成功....");
    return "用户"+name+"下单成功";
}

}

启动类配置启用feign注解
@SpringBootApplication
@EnableFeignClients(basePackages = "com.mmc.user")
public class TradeApplication {

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

}
测试
依次启动eureka Server,user工程,trade工程。输入网址测试

http://localhost:8005/trade/testTrade/1

github地址:https://github.com/mmcLine/spring-cloud-study

原文地址https://www.cnblogs.com/javammc/p/12638109.html

相关文章
|
5天前
|
XML Java 数据格式
Spring 项目如何使用AOP
Spring 项目如何使用AOP
19 2
|
5天前
|
Java Spring
Spring boot项目如何发送邮件
Spring boot项目如何发送邮件
16 2
|
11天前
|
Java Spring
IDEA 创建 SpringCloud项目-多项目方式
IDEA 创建 SpringCloud项目-多项目方式
|
11天前
|
JSON Java Apache
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
Spring Cloud Feign 使用Apache的HTTP Client替换Feign原生httpclient
|
11天前
|
Java API 数据安全/隐私保护
【亮剑】如何在Java项目中结合Spring框架实现邮件发送功能
【4月更文挑战第30天】本文介绍了如何在Java项目中结合Spring框架实现邮件发送功能。首先,需在`pom.xml`添加Spring和JavaMail依赖。然后,在`applicationContext.xml`配置邮件发送器,包括SMTP服务器信息。接着,创建一个使用依赖注入的`EmailService`类,通过`JavaMailSender`发送邮件。最后,调用`EmailService`的`sendSimpleEmail`方法即可发送邮件。最佳实践包括:使用配置管理敏感信息,利用`MimeMessage`构造复杂邮件,异常处理和日志记录,以及在大量发送时考虑使用邮件队列。
|
15天前
|
Java Maven Docker
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
0.07 秒启动一个 SpringBoot 项目!Spring Native 很强!!
26 2
|
17天前
|
Java Nacos 开发者
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
Java从入门到精通:4.2.1学习新技术与框架——以Spring Boot和Spring Cloud Alibaba为例
|
22天前
|
Java Linux 虚拟化
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
56 1
|
23天前
|
存储 Java Maven
江帅帅:Spring Boot 底层级探索系列 01- 搭建项目
江帅帅:Spring Boot 底层级探索系列 01- 搭建项目
35 0
江帅帅:Spring Boot 底层级探索系列 01- 搭建项目
|
27天前
|
缓存 Java Spring
单体项目中资源管理模块集成Spring Cache
该内容是关于将Spring Cache集成到资源管理模块以实现缓存同步的说明。主要策略包括:查询时添加到缓存,增删改时删除相关缓存。示例代码展示了@Service类中使用@Transactional和@Cacheable注解进行缓存操作,以及在RedisTemplate中处理缓存的示例。
24 5