利用idea快速搭建一個spring-cloud(圖文)

package com.example.consumer;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
@SpringBootApplication
 
//掃描所有包
@ComponentScan("com.test")
//聲明為註冊服務
@EnableEurekaClient
//把調用註冊子模塊接口引入到Spring容器中(不加此註解會出現找不到@FeignClient修飾的接口)
@EnableFeignClients("com.test")//包路徑解決啟動類在別的包下問題
 
public class ConsumerApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
 
}

1、創建一個空的maven項目!

2、創建一個註冊中心模塊

3、配置註冊中心

package com.example.eurekaserver;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;
 
@SpringBootApplication
//聲明為註冊中心
@EnableEurekaServer
public class EurekaServerApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(EurekaServerApplication.class, args);
    }
 
}

配置文件改用yml,配置如下:

server:
  #運行端口
  port: 8888
eureka:
  instance:
    #註冊ip
    hostname: localhost
  client:
    #禁止自己當做服務註冊
    register-with-eureka: false
    #屏蔽註冊信息
    fetch-registry: false
    #註冊url
    serviceUrl:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/

啟動成功後,訪問本地+端口即可看到註冊中心頁面,說明成功啦!

3、創建一個服務提供者(就是常寫的spring-boot)

服務提供者配置,如下:

package com.example.provider;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 
@SpringBootApplication
//聲明為註冊服務
@EnableEurekaClient
public class ProviderApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
 
}

 配置文件改用yml,配置如下:

eureka:
  client:
    serviceUrl:
      #服務註冊地址
      defaultZone: http://localhost:8888/eureka/
server:
  #運行端口
  port: 8001
spring:
  application:
    #服務註冊名稱
    name: service-provider

 按照寫springboot那樣寫一個查庫接口

package com.example.provider;
 
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.context.annotation.ComponentScan;
 
@SpringBootApplication
//聲明為註冊服務
@EnableEurekaClient
//掃描所有包
@ComponentScan("com.test")
//掃描mapper
@MapperScan("com.test.mapper")
public class ProviderApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ProviderApplication.class, args);
    }
 
}

yml配置

eureka:
  client:
    serviceUrl:
      #服務註冊地址
      defaultZone: http://localhost:8888/eureka/
server:
  #運行端口
  port: 8001
spring:
  application:
    #服務註冊名稱
    name: service-provider
  #數據庫鏈接
  datasource:
    username: root
    password: yh996112
    url: jdbc:mysql://localhost:3306/yanghao?useUnicode=true&characterEncoding=utf-8&useSSL=true&serverTimezone=UTC
    driver-class-name: com.mysql.cj.jdbc.Driver
#mybatis配置
mybatis:
  mapper-locations: classpath:mapper/*Mapper.xml
  type-aliases-package: com.test.doman

OK,查庫然後接口返回數據成功!

咱們的服務也在註冊中心中註冊成功啦! 

4、創建一個消費者服務

點擊完成創建該模塊

啟動器配置

package com.example.consumer;
 
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.stereotype.Component;
 
@SpringBootApplication
//聲明為註冊服務
@EnableEurekaClient
//把調用註冊子模塊接口引入到Spring容器中(不加此註解會出現找不到@FeignClient修飾的接口)
@EnableFeignClients
public class ConsumerApplication {
 
    public static void main(String[] args) {
        SpringApplication.run(ConsumerApplication.class, args);
    }
 
}

配置文件改用yml,配置如下:

eureka:
  client:
    serviceUrl:
      #服務註冊地址
      defaultZone: http://localhost:8888/eureka/
server:
  #運行端口
  port: 8002
spring:
  application:
    #服務註冊名稱
    name: service-consumer
 

將服務提供者模塊中的controller復制到消費者模塊,如果涉及doman中文件就一並復制過去。

package com.example.consumer.service;
 
import com.example.consumer.doman.Test;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.stereotype.Service;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestParam;
 
/**
 * @Description:使用@FeignClient註解調用註冊子模塊接口方法
 * @Author :y
 */
//註冊子模塊名稱
@FeignClient("service-provider")
public interface TestService {
    //接口訪問地址
    @GetMapping("index/index")
    public Test getTest(@RequestParam("id") Integer id);
}

接口調用該service

啟動消費者,進行接口測試!

訪問消費者接口沒有問題,成功的調用瞭服務提供者的接口返回瞭數據!!!

以上就是idea快速部署springCloud的全部過程,其中發現瞭一個問題,在消費者模塊中啟動器貌似無法使用@ComponentScan註解掃描包,使用後啟動會報錯???具有原因沒有瞭解,建議不要把啟動類放在別的包。

2022-03-14:該問題解決!

問題描述:

在消費者模塊中,當啟動類在別的包下時,使用@ComponentScan掃描包來自動javaBean

但是因為service接口中的@FeignClient註解同樣不在啟動類的包下,所以僅用@ComponentScan掃描包而找不到@FeignClient同樣會報錯的。

所以在啟動類的@EnableFeignClients註解應該指定包去掃描一下!!!

消費者模塊配置如下:

 到此這篇關於利用idea快速搭建一個spring-cloud(圖文)的文章就介紹到這瞭,更多相關idea搭建spring-cloud內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: