Hello SoFast

本章节旨在指导用户基于 SOFAST 框架快速开发一个独立的微服务demo
创建后台服务及代码实现
创建工程

在biz-modules工程下创建biz-hello模块

修改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就可以使用

注意点:

  • 版本号:<version>标签中的版本为${revision}
  • 在父 pom.xml(biz-modules模块)中 <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(exclude = DruidDataSourceAutoConfigure.class)
    public class SoFastHelloApplication {

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

在resources下创建bootstrap.yml和logback-spring.xml

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

logback-spring.xml

<?xml version="1.0" encoding="UTF-8"?>

<!--
   此文件不能使用默认名称logback.xml,因为logback.xml会优先加载application.yml文件,因此挡在logback中使用springProperty标签将无法获取信息;
   解决方案:将文件命名为logback-spring.xml
-->

<configuration debug="false" scan="false">
   <springProperty scop="context" name="spring.application.name" source="spring.application.name" defaultValue=""/>
   <property name="log.path" value="logs/${spring.application.name}"/>
   <!-- 彩色日志格式 -->
   <property name="CONSOLE_LOG_PATTERN"
           value="${CONSOLE_LOG_PATTERN:-%clr(%d{yyyy-MM-dd HH:mm:ss.SSS}){faint} %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%15.15t]){faint} %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
   <!-- 彩色日志依赖的渲染类 -->
   <conversionRule conversionWord="clr" converterClass="org.springframework.boot.logging.logback.ColorConverter"/>
   <conversionRule conversionWord="wex"
               converterClass="org.springframework.boot.logging.logback.WhitespaceThrowableProxyConverter"/>
   <conversionRule conversionWord="wEx"
               converterClass="org.springframework.boot.logging.logback.ExtendedWhitespaceThrowableProxyConverter"/>
   <!-- 控制台打印日志 -->
   <appender name="console" class="ch.qos.logback.core.ConsoleAppender">
      <encoder>
         <pattern>${CONSOLE_LOG_PATTERN}</pattern>
      </encoder>
   </appender>

   <!-- 普通日志 -->
   <appender name="debug" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${log.path}/debug.log</file>
      <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
         <fileNamePattern>${log.path}/%d{yyyy-MM, aux}/debug.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
         <maxFileSize>50MB</maxFileSize>
         <maxHistory>30</maxHistory>
      </rollingPolicy>
      <encoder>
         <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
      </encoder>
   </appender>

   <!-- 错误日志 -->
   <appender name="error" class="ch.qos.logback.core.rolling.RollingFileAppender">
      <file>${log.path}/error.log</file>
      <rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
         <fileNamePattern>${log.path}/%d{yyyy-MM}/error.%d{yyyy-MM-dd}.%i.log.gz</fileNamePattern>
         <maxFileSize>50MB</maxFileSize>
         <maxHistory>30</maxHistory>
      </rollingPolicy>
      <encoder>
         <pattern>%date [%thread] %-5level [%logger{50}] %file:%line - %msg%n</pattern>
      </encoder>
      <filter class="ch.qos.logback.classic.filter.ThresholdFilter">
         <level>ERROR</level>
      </filter>
   </appender>

   <!--nacos 心跳 INFO 屏蔽-->
   <logger name="com.alibaba.nacos" level="OFF">
      <appender-ref ref="error"/>
   </logger>

   <!-- Level: FATAL 0  ERROR 3  WARN 4  INFO 6  DEBUG 7 -->
   <root level="INFO">
      <appender-ref ref="console"/>
      <appender-ref ref="debug"/>
      <appender-ref ref="error"/>
   </root>
</configuration>

在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
实现接口

在controller目录下新建HelloController.java代码如下

package com.sofast.cloud.biz.hello.controller;

import com.sofast.cloud.common.domain.vo.R;
import com.sofast.cloud.core.web.controller.BaseController;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
 * <p>
 * 微服务demo演示
 * </p>
 *
 * @author NCIT
 * @date 2021-1-19
 */
@Api(value = "微服务demo演示", tags = "微服务demo演示")
@RestController
@RequestMapping("/biz")
public class HelloController extends BaseController {

    @ApiOperation(value = "Hello Word演示")
    @GetMapping(value = "/hello")
    public R<String> hello() {
        return R.data("hello word");
    }

}

至此后台服务创建完成

启动biz-hello服务,在浏览器中访问Swagger地址: http://localhost:9090/doc.html ,验证后台接口

使用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初始化会报错

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

results matching ""

    No results matching ""