背景

最近在做cloud项目,但是对于cloud项目的搭建还有有疑问的,所以尝试自己进行搭建并把自己遇到的问题进行总结。

步骤

配置父pom文件

在配置pom文件之前首先要搭建一个空的maven项目。在父pom文件中加入依赖。

一、引入依赖:springcloud和cpringcloudalibaba依赖

<dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-dependencies</artifactId>
                <version>${spring-cloud.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <dependency>
                <groupId>com.alibaba.cloud</groupId>
                <artifactId>spring-cloud-alibaba-dependencies</artifactId>
                <version>${spring-cloud-alibaba.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>

上面的代码中加入的依赖为spring-cloud-dependencies和spring-cloud-alibaba-dependencies

搭建cloud项目以及各个依赖和配置说明_ci

引入spring-boot-starter-parent

<parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.12.RELEASE</version>
 </parent>

添加cloud版本号

<properties>
<!--cloud版本号-->
        <spring-cloud.version>Hoxton.SR12</spring-cloud.version>
        <spring-cloud-alibaba.version>2.2.8.RELEASE</spring-cloud-alibaba.version>
        <java.version>11</java.version>
    </properties>

到这里父pom就基本上配置完毕。

添加网关模块

右击项目–new–添加module,创建普通的manen项目

搭建cloud项目以及各个依赖和配置说明_端口号_02

网关是cloud项目中所有模块的入口,所以它的配置和普通的配置略有不同。

一、添加依赖

    <dependencies>
        <dependency>
            <!--     gateway 注意 此模块不能引入starter-web       -->
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-gateway</artifactId>
        </dependency>

        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
    </dependencies>

pring-cloud-starter-alibaba-nacos-discovery是Spring Cloud Alibaba中关于Nacos服务发现的起步依赖。引入它可以让Spring Cloud应用使用Nacos作为服务注册与发现中心。

二、配置网关的application.yml文件

server:
#  该模块的端口号
  port: 8080
spring:
  application:
#  网关名称
    name: gateway
  profiles:
#指定环境
    active: local

  cloud:
    gateway:
      discovery:
        locator: 
          enabled: true # 让gateway从nacos中获取服务信息
      rotes:
        - id: user_route            #用户模块路由
          uri: lb://test   #test项目注册到nacos的服务名称,
          order: 1
          predicates:
            - Path=/test/**  #路由断言,用于判断请求是否符合转发条件。这里是判断请求路径是否以/test开头,如果是则转发到test服务

    nacos:
      discovery:
        server-addr: nacos地址+端口号 #nacos地址
        namespace: FilterTest

三、网关启动类

@SpringBootApplication
@EnableDiscoveryClient   //服务注册是否可以被发现
public class GateWayApplication {
    public static void main(String[] args) {
        SpringApplication.run(GateWayApplication.class,args);
    }
}

普通模块

普通模块创建和网关模块创建是一样的。

一、普通模块的配置文件

server:
  port: 8082
  servlet:
    context-path: /test
spring:
  application:
    name: test
  profiles:
    active: local
  cloud:
    nacos:
      discovery:
        server-addr: nacos地址+端口号 #nacos地址
        namespace: FilterTest

二、启动类

@SpringBootApplication
@EnableDiscoveryClient
public class TestApplication {
    public static void main(String[] args) throws UnknownHostException {
        ConfigurableApplicationContext application =SpringApplication.run(TestApplication.class,args);

}

总结

本博客文中只是简单的搭建了一个cloud项目,如果在实际开发过程中需要用到其他的组件,在pom文件中引入相关依赖。

最后搭建完毕之后访问此:http://localhost:8080/test/test/TestController/test地址可以访问到自己的项目。需要说明一下,url地址中的第一个“/test”是网关中配置的地址,第二个test是自己模块中的上下文地址。