一、创建父类工程

首先创建一个springboot项目

idea具体创建springboot项目可以参考文档:

  1. 项目名称为obwt-cloud(物流cloud:wms(仓储),tms(运输),oms(订单),bms(结算))
  2. 创建完成以后,删除不必要的文件夹,得到下图



springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_spring


  1. 对pom.xml文件内容进行修改

注意点:在pom文件当中,<modules>标签里面的内容因为还没有创建好子项目,里面的内容可以先注释掉

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <artifactId>obwt-cloud</artifactId>
    <groupId>com.obwt</groupId>
    <version>0.0.1-SNAPSHOT</version>
    <!--用来存放子项目 在子项目为创建的时候可以先注释-->
    <modules>
        <module>bms-cloud</module>
        <module>tms-cloud</module>
        <module>wms-cloud</module>
        <module>oms-cloud</module>
    </modules>
    <packaging>pom</packaging>

    <!--统一对jar包版本进行管理
    子模块继承之后,提供作用: 锁定版本+子modlue不用写groupId和version -->
    <properties>
        <!-- 指定SpringBoot版本 -->
        <spring-boot.version>2.5.3</spring-boot.version>
        <!-- 指定SpringCloud版本 -->
        <spring-cloud.version>2020.0.3</spring-cloud.version>
        <!-- 指定SpringCloudAlibaba版本 -->
        <spring-cloud-alibaba.version>2021.1</spring-cloud-alibaba.version>
        <alibaba.nacos.version>2.0.3</alibaba.nacos.version>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.source>1.8</maven.compiler.source>
        <maven.compiler.target>1.8</maven.compiler.target>
        <junit.version>4.12</junit.version>
        <log4j.version>1.2.17</log4j.version>
        <lombok.version>1.18.14</lombok.version>
        <mysql.version>5.1.41</mysql.version>
        <druid.version>1.2.6</druid.version>
        <mybatis.spring.boot.version>2.2.0</mybatis.spring.boot.version>
        <mybaits.plus.version>3.3.2</mybaits.plus.version>
        <alibaba.json.version>1.2.75</alibaba.json.version>
        <!--指定jdk版本-->
        <java.version>1.8</java.version>
        <spring-cloud-starter-bootstrap.version>3.0.2</spring-cloud-starter-bootstrap.version>
    </properties>
    <dependencyManagement>
        <dependencies>
            <!--spring boot 2.2.2-->
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-dependencies</artifactId>
                <version>${spring-boot.version}</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
            <!--spring cloud Hoxton.SR1-->
            <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>
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>${mysql.version}</version>
            </dependency>
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>druid-spring-boot-starter</artifactId>
                <version>${druid.version}</version>
            </dependency>
            <dependency>
                <groupId>org.mybatis.spring.boot</groupId>
                <artifactId>mybatis-spring-boot-starter</artifactId>
                <version>${mybatis.spring.boot.version}</version>
            </dependency>
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>${junit.version}</version>
            </dependency>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>${log4j.version}</version>
            </dependency>
            <dependency>
                <groupId>org.projectlombok</groupId>
                <artifactId>lombok</artifactId>
                <version>${lombok.version}</version>
                <optional>true</optional>
            </dependency>
            <!-- bootstrap 启动器 -->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-bootstrap</artifactId>
                <version>${spring-cloud-starter-bootstrap.version}</version>
            </dependency>
            <!--mybatis plus-->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>${mybaits.plus.version}</version>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-core</artifactId>
                <version>${mybaits.plus.version}</version>
                <scope>compile</scope>
            </dependency>
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-extension</artifactId>
                <version>${mybaits.plus.version}</version>
                <scope>compile</scope>
            </dependency>
            <!--json-->
            <dependency>
                <groupId>com.alibaba</groupId>
                <artifactId>fastjson</artifactId>
                <version>${alibaba.json.version}</version>
            </dependency>
        </dependencies>

    </dependencyManagement>


    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
                <configuration>
                    <addResources>true</addResources>
                </configuration>
            </plugin>
        </plugins>
    </build>

</project>

二、创建子模块BMS

点击右键,创建一个新的springboot项目,名字叫做bms-cloud


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_spring boot_02


  1. 修改子项目bms-cloud的pom.xml文件

注意点:记得在父工程的<modules>标签下面添加好<module>bms-cloud</module>

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
    <!--父项目之间的依赖-->
    <parent>
        <artifactId>obwt-cloud</artifactId>
        <groupId>com.obwt</groupId>
        <version>0.0.1-SNAPSHOT</version>
    </parent>
    <groupId>com.bms</groupId>
    <artifactId>bms-cloud</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>bms-cloud</name>
    <description>bms-cloud</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <dependency>
            <groupId>org.mybatis.spring.boot</groupId>
            <artifactId>mybatis-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid-spring-boot-starter</artifactId>
        </dependency>
        <!--mysql-connector-java-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
        </dependency>
        <!--jdbc-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-jdbc</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--nacos-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-bootstrap</artifactId>
        </dependency>
        <!-- mybatis-plus -->
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-core</artifactId>
        </dependency>
        <dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-extension</artifactId>
        </dependency>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>fastjson</artifactId>
        </dependency>
        <!--openfeign-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-openfeign</artifactId>
        </dependency>
        <!-- SpringCloud Loadbalancer -->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-loadbalancer</artifactId>
        </dependency>

    </dependencies>

    <build>

    </build>

</project>
  1. 将application.properties文件修改成bootstrap.yml文件,因为我在pom文件有已经配置了bootstrap启动器,这里需要进行修改(不修改也可以,可以按照自己想要的配置格式来)


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_spring_03


  1. 进行项目启动测试,简单配置bootstrap.yml,启动bms-cloud项目,创建controller文件夹,创建测试类

注意点:按照下面的配置,控制台这个时候会一直报错,因为我们还没有配置nacos,这是正常的

server:
    port: 8001
spring:
    datasource:
        #type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://192.168.139.128:3306/work_order?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root
        password: 123456


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_后端_04


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_后端_05


代码

@RestController
public class TestController {

    @GetMapping("/test")
    public String test1(){
        return "test1";
    }
}

三、配置连接nacos

  1. 安装nacos,这个安装的nacos是在centos环境上,仅供参考:
  2. 安装成功以后进入nacos创建一个新的服务配置,要注意Data ID和Group,这两个一个是服务名称,一个是分组名称。

将下面的内容复制到nacos的内容上就可以,注意文件要点击yaml类型

spring:
    datasource:
        #type: com.alibaba.druid.pool.DruidDataSource
        driver-class-name: com.mysql.jdbc.Driver
        url: jdbc:mysql://192.168.139.128:3306/work_order?useUnicode=true&characterEncoding=utf-8&useSSL=false
        username: root
        password: 123456


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_spring cloud_06


  1. 发布成功以后,再对bootstrap.yml文件进行编辑

这里面要特别区分的是nacos上的discovery和config内容,disvocery是服务注册和服务发现,服务注册指的是将对应的服务注册到nacos上,这样可以用于其他服务进行服务发现,而且自己也可以对其他服务进行服务发现。

server:
    port: 8001
spring:
    application:
        # 服务名称
        name: bms-cloud-service
    profiles:
        active: dev
    cloud:
        nacos:
            #discovery 服务注册
            discovery:
                server-addr: 192.168.139.128:8848
                #分组
                group: LOCAL_GROUP
                # 注册到nacos上的服务名称,默认{${spring.application.name}
                service: ${spring.application.name}
            #config 读取nacos上的服务配置
            config:
                file-extension: yaml
                #分组
                group: LOCAL_GROUP
                server-addr: 192.168.139.128:8848
  1. 编辑完成bootstrop.yml,重新启动项目,这个时候项目可以正常启动成功,可以再次指向上面的controller接口进行测试。如果项目报错了no available server, currentServerAddr,这个是正常的,这个的意思是当前服务长时间不使用,这里暂时不管。
  2. 创建对应的文件夹,比如entity,dao,service这些等等

四、利用相同的方式去创建OWS、TMS和WMS

这里就不进行演示了,直接按照第二步来就可以,最终效果


springcloud 整合nacos Failed to introspect Class nacos+springcloud项目_spring boot_07