创建工程

本章节介绍基于so-fast-pl-cloud源码进行开发的方式创建工程。 so-fast-pl-cloud内置so-fast-biz模块是开发业务服务的父级目录, 在biz-modules工程下创建biz-hello模块

img

修改biz-hello模块中的pom.xml文件

在pom.xml中加入biz-common-web依赖

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>biz-modules</artifactId>
        <groupId>com.sofast.cloud</groupId>
        <version>${revision}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>biz-hello</artifactId>

    <dependencies>
        <dependency>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>biz-common-web</artifactId>
        </dependency>
    </dependencies>

</project>

因为biz-common-web中引入了so-fast-web-starter,所以我们在pom.xml中加入biz-common-web就可以使用

注意点:

  • 版本号:标签中的版本为${revision}
  • 在父 pom.xml(biz-modules模块)中 标签中追加biz-hello模块(一般会自动添加,如果修改或者删除项目则需要手动更改)

以下为biz-modules模块中的pom.xml

<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <parent>
        <artifactId>biz-modules</artifactId>
        <groupId>com.sofast.cloud</groupId>
        <version>${revision}</version>
    </parent>
    <modelVersion>4.0.0</modelVersion>

    <artifactId>biz-hello</artifactId>
    <description>业务演示模块</description>

    <dependencies>
        <dependency>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>biz-common-web</artifactId>
        </dependency>
    </dependencies>

</project>
创建启动类
    /**
     *
     * @author NCIT
     * @date 2021/1/19
     */
    @EnableSwagger2
    @EnableSolFeign
    @EnableDiscoveryClient
    @SpringBootApplication
    public class SoFastHelloApplication {

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

@EnableSwagger2 表示要启用swagger api,swagger的扫描路径需要在bootstrap.yml中进行配置

@EnableSolFeign 表示要启用Feign,默认扫描路径为「com.sofast.cloud」,如果自定义包路径,请配置basePackages参数

@EnableDiscoveryClient:服务发现客户端

常规微服务需要同时开启以上4个注解。

注意:SOFAST中使用的orm框架为mybatis-plus,默认的mapper接口扫描路径为:@MapperScan({"com.sofast.cloud..mapper."}),如果自定义开发时,创建了其他前缀包名,请在启动文件配置自定义MapperScan路径,包名规划请尽可能遵守sofast框架规范,减少参数设置

配置文件

在resources下创建bootstrap.yml

bootstrap.yml

修改点:

  • 服务端口:server.port
  • swagger包扫描:swagger.basePackage
  • Nacos连接信息
# 服务端口
server:
  port: 9090

spring:
  application:
    name: @artifactId@
  profiles:
    # 从根pom.xml中获取的环境区分变量
    active: @profileActive@

  cloud:
    nacos:
      discovery:
        # 服务注册地址
        server-addr: ${NACOS_HOST:localhost}:${NACOS_PORT:8848}
        # 服务分组
        group: SO_FAST_GROUP
        username: nacos
        password: so-fast(Nttdata)
      config:
        # 配置中心地址
        server-addr: ${spring.cloud.nacos.discovery.server-addr}
        # 配置文件格式
        file-extension: yml
        # 配置分组
        group: SO_FAST_GROUP
        # 共享配置(例:application-dev.yml 在dev环境中,配置了共享配置的服务都会读取data-id是application-dev.yml中的配置)
        # 优先级:bootstrap.yml > bootstrap-dev.yml > application.yml > application-dev.yml > biz-hello.yml > biz-hello-dev.yml
        # PS:bootstrap.yml为项目资源文件,无法通过Nacos配置;同属性配置右侧会覆盖左侧
        shared-configs[0]:
          data-id: application-${spring.profiles.active}.${spring.cloud.nacos.config.file-extension}
          group: ${spring.cloud.nacos.config.group}
          refresh: true
        username: ${spring.cloud.nacos.discovery.username}
        password: ${spring.cloud.nacos.discovery.password}
        context-path: /nacos

#swagger配置
swagger:
  # 包扫描
  basePackage: com.sofast.cloud.biz.hello

# 利用info端点,加入版本等信息
info:
  versin: @project.version@
  name: @project.artifactId@
  group: @project.groupId@
  description: @project.description@
  #还可以自定义信息
  author: NCIT.1SOL

在nacos中创建biz-hello-dev.yml配置文件

Data ID :biz-hello-dev.yml

Group :SO_FAST_GROUP

配置格式 :yaml

注意修改数据库连接信息

########### 本地开发用环境 ###############

# 数据源配置
spring:
  datasource:
    dynamic:
      datasource:
        # 主库数据源
        master:
          url: jdbc:mysql://localhost:3306/biz-hello?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=true&serverTimezone=GMT%2B8
          username: root
          password: root

  # 服务模块
  devtools:
  restart:
    # 热部署开关
    enabled: true

#mybatis-plus配置
mybatis-plus:
  # 自定义xml文件路径
  mapper-locations: classpath*:mapper/**/*Mapper.xml
  # MyBaits 别名包扫描路径,通过该属性可以给包中的类注册别名,注册后在 Mapper 对应的 XML 文件中可以直接使用类名,而不用使用全限定的类名(即 XML 中调用的时候不用包含包名)
  #type-aliases-package: com.sofast.cloud.**.entity, com.sofast.cloud.**.domain.**
  # mybatis执行器 该执行器类型会复用预处理语句(PreparedStatement)
  executor-type: reuse

  # 控制台打印sql
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl

  global-config:
    #是否控制台 print mybatis-plus 的 LOGO
    banner: false

    db-config:
      select-strategy: not_null
      # 逻辑删除配置
      logic-delete-value: 1
      logic-not-delete-value: 0
      logic-delete-field: deleteFlg

使用SoFast网关代理微服务需要在nacos中的sofast-gateway-routes配置里添加如下信息:

{
    "id": "biz-hello",
    "order": 10,
    "predicates": [{
        "args": {
            "pattern": "/biz-hello/**"
        },
        "name": "Path"
    }],
    "filters": [{
        "name": "StripPrefix",
        "args": {
            "parts": 1
        }
    }],
    "uri": "lb://biz-hello"
}

访问SoFast网关Swagger地址:http://localhost:9000/doc.html ,选择服务下拉框(左上角)中选择biz-hello服务即可

PS:需要先启动so-fast-log服务,否则SOFAST网关Swagger初始化会报错

常见问题

1.关于数据源

SOFAST框架默认使用动态数据源插件,因此在启动类上,我们需要排除默认的DruidDataSourceAutoConfigure配置类,而使用动态数据源插件携带的配置类;在配置文件中,必须按照动态数据源的配置方式,配置jdbc连接,否则启动会报错。

如果该微服务中不需要连接数据库和redis,那么请在pom.xml文件中将数据库依赖包排除。例如:

<dependency>
    <groupId>com.sofast.cloud</groupId>
    <artifactId>so-fast-web-starter</artifactId>
    <exclusions>
        <!-- 排除数据库 -->
        <exclusion>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>so-fast-mybatis-starter</artifactId>
        </exclusion>
        <!-- 排除数据库 -->
        <exclusion>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>so-fast-ds-starter</artifactId>
        </exclusion>
        <!-- 排除redis -->
        <exclusion>
            <groupId>com.sofast.cloud</groupId>
            <artifactId>so-fast-redis-starter</artifactId>
        </exclusion>
    </exclusions>
</dependency>

2.关于微服务路由配置

微服务开发完成后,需要通过网关进行统一转发访问,生产环境不允许直接暴露微服务端口;但是在本地开发时,可以直接访问微服务api。

不通过网关代理,在微服务中是无法获取token及用户信息的,因此只能作为本机开发调试使用。

测试和生产环境,需要在gateway中配置动态路由,才可以通过网关来访问微服务,动态路由的配置可以参考网关中的示例。

3.关于swagger

sofast框架默认提供swagger api doc,需要在启动类上加入注解@EnableSwagger2,以及在bootstrap.yml文件中配置扫描的包路径

#swagger配置(修改为自己的包名)
swagger:
  basePackage: com.sofast.cloud.biz.hello

服务启动后,通过http://ip:port/doc.html 地址就可以访问swagger

Copyright © 2022. 恩梯梯数据(中国)信息技术有限公司. all right reserved,powered by Gitbook该文件修订时间: 2022-02-28 10:33:58

results matching ""

    No results matching ""