jeecgboot / JeecgBoot

🔥「企业级低代码平台」前后端分离架构SpringBoot 2.x/3.x,SpringCloud,Ant Design&Vue3,Mybatis,Shiro,JWT。强大的代码生成器让前后端代码一键生成,无需写任何代码! 引领新的开发模式,引入AI模型能力 OnlineCoding->代码生成->手工MERGE,帮助Java项目解决70%重复工作,让开发更关注业务,既能快速提高效率,帮助公司节省成本,同时又不失灵活性。
http://www.jeecg.com
Apache License 2.0
40.66k stars 14.84k forks source link

单体架构融入shardingjdbc,不使用cloud模块 #4149

Closed zhangdaiscott closed 2 years ago

zhangdaiscott commented 2 years ago
版本号:

3.4.3

前端版本:vue3版?还是 vue2版?

vue2

问题描述:

增加shardingjdbc,但是没有效果,原来的数据源和shardingjdbc的数据源冲突吗?是只能保留shardingjdbc的吗?但是删除多数据源会报错,不删除好像shardingjdbc的不生效,但是实际看DataSourcemap里好像两个数据源全都有,求解答使程序正产

截图&代码:

1.在jeecg-system-start的pom文件引入了如下坐标

org.jeecgframework.boot jeecg-boot-starter-shardingsphere

2.yml配置文件如下,也是在jeecg-system-start模块下 server: port: 8080 tomcat: max-swallow-size: -1 error: include-exception: true include-stacktrace: ALWAYS include-message: ALWAYS servlet: context-path: /jeecg-boot compression: enabled: true min-response-size: 1024 mime-types: application/javascript,application/json,application/xml,text/html,text/xml,text/plain,text/css,image/*

management: endpoints: web: exposure: include: metrics,httptrace

spring: shardingsphere: datasource: ds0: type: com.alibaba.druid.pool.DruidDataSource validationQuery: SELECT 1 FROM DUAL url: jdbc:mysql://127.0.0.1:3306/jttx?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: 1234 driver-class-name: com.mysql.cj.jdbc.Driver names: ds0 enabled: true props: sql: show: true sharding: tables:

分表策略

    taskinfo:
      actual-data-nodes: ds0.taskinfo_$->{0..1}
      key-generator:
        column: id
        type: SNOWFLAKW
      table-strategy:
        inline:
          sharding-column: num
          algorithm-expression: taskinfo_$->{num % 2}

rabbitmq: host: 127.0.0.1 port: 5672 username: guest password: guest

虚拟host 可以不设置,使用server默认host

virtual-host: /

main: allow-circular-references: true servlet: multipart: max-file-size: 10MB max-request-size: 10MB mail: host: smtp.163.com username: jeecgos@163.com password: ?? properties: mail: smtp: auth: true starttls: enable: true required: true

quartz定时任务,采用数据库方式

quartz: job-store-type: jdbc initialize-schema: embedded

定时任务启动开关,true-开 false-关

auto-startup: true
#延迟1秒启动定时任务
startup-delay: 1s
#启动时更新己存在的Job
overwrite-existing-jobs: true
properties:
  org:
    quartz:
      scheduler:
        instanceName: MyScheduler
        instanceId: AUTO
      jobStore:
        class: org.springframework.scheduling.quartz.LocalDataSourceJobStore
        driverDelegateClass: org.quartz.impl.jdbcjobstore.StdJDBCDelegate
        tablePrefix: QRTZ_
        isClustered: true
        misfireThreshold: 12000
        clusterCheckinInterval: 15000
      threadPool:
        class: org.quartz.simpl.SimpleThreadPool
        threadCount: 10
        threadPriority: 5
        threadsInheritContextClassLoaderOfInitializingThread: true

json 时间戳统一转换

jackson: date-format: yyyy-MM-dd HH:mm:ss time-zone: GMT+8 jpa: open-in-view: false aop: proxy-target-class: true

配置freemarker

freemarker:

设置模板后缀名

suffix: .ftl
# 设置文档类型
content-type: text/html
# 设置页面编码格式
charset: UTF-8
# 设置页面缓存
cache: false
prefer-file-system-access: false
# 设置ftl文件路径
template-loader-path:
  - classpath:/templates

设置静态文件路径,js,css等

mvc: static-path-pattern: /**

Spring Boot 2.6+后映射匹配的默认策略已从AntPathMatcher更改为PathPatternParser,需要手动指定为ant-path-matcher

pathmatch:
  matching-strategy: ant_path_matcher

resource: static-locations: classpath:/static/,classpath:/public/ autoconfigure: exclude: com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceAutoConfigure datasource: primary: sharding druid: stat-view-servlet: enabled: true loginUsername: admin loginPassword: 123456 allow: web-stat-filter: enabled: true dynamic: druid: # 全局druid参数,绝大部分值和默认保持一致。(现已支持的参数如下,不清楚含义不要乱设置)

连接池的配置信息

    # 初始化大小,最小,最大
    initial-size: 5
    min-idle: 5
    maxActive: 20
    # 配置获取连接等待超时的时间
    maxWait: 60000
    # 配置间隔多久才进行一次检测,检测需要关闭的空闲连接,单位是毫秒
    timeBetweenEvictionRunsMillis: 60000
    # 配置一个连接在池中最小生存的时间,单位是毫秒
    minEvictableIdleTimeMillis: 300000
    validationQuery: SELECT 1
    testWhileIdle: true
    testOnBorrow: false
    testOnReturn: false
    # 打开PSCache,并且指定每个连接上PSCache的大小
    poolPreparedStatements: true
    maxPoolPreparedStatementPerConnectionSize: 20
    # 配置监控统计拦截的filters,去掉后监控界面sql无法统计,'wall'用于防火墙
    filters: stat,wall,slf4j
    # 通过connectProperties属性来打开mergeSql功能;慢SQL记录
    connectionProperties: druid.stat.mergeSql\=true;druid.stat.slowSqlMillis\=5000
  datasource:
    master:
      url: jdbc:mysql://127.0.0.1:3306/jttx?characterEncoding=UTF-8&useUnicode=true&useSSL=false&tinyInt1isBit=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
      username: root
      password: 1234
      driver-class-name: com.mysql.cj.jdbc.Driver
      # 多数据源配置
      #multi-datasource1:
      #url: jdbc:mysql://localhost:3306/jeecg-boot2?useUnicode=true&characterEncoding=utf8&autoReconnect=true&zeroDateTimeBehavior=convertToNull&transformedBitIsBoolean=true&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai
      #username: root
      #password: root
      #driver-class-name: com.mysql.cj.jdbc.Driver

redis 配置

redis: database: 0 host: 127.0.0.1 port: 6379 password: ''

mybatis plus 设置

mybatis-plus: mapper-locations: classpath*:org/jeecg/modules/*/xml/Mapper.xml global-config:

关闭MP3.0自带的banner

banner: false
db-config:
  #主键类型  0:"数据库ID自增",1:"该类型为未设置主键类型", 2:"用户输入ID",3:"全局唯一ID (数字类型唯一ID)", 4:"全局唯一ID UUID",5:"字符串全局唯一ID (idWorker 的字符串表示)";
  id-type: ASSIGN_ID
  # 默认数据库表下划线命名
  table-underline: true

configuration:

这个配置会将执行的sql打印出来,在开发或测试的时候可以用

#log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
# 返回类型为Map,显示null对应的字段
call-setters-on-nulls: true

jeecg专用配置

minidao: base-package: org.jeecg.modules.jmreport.* jeecg:

是否启用安全模式

safeMode: false

签名密钥串(前后端要一致,正式发布请自行修改)

signatureSecret: dd05f1c54d63749eda95f9fa6d49v442a

签名拦截接口

signUrls: /sys/dict/getDictItems/,/sys/dict/loadDict/,/sys/dict/loadDictOrderByValue/,/sys/dict/loadDictItem/,/sys/dict/loadTreeData,/sys/api/queryTableDictItemsByCode,/sys/api/queryFilterTableDictInfo,/sys/api/queryTableDictByKeys,/sys/api/translateDictFromTable,/sys/api/translateDictFromTableByKeys

local、minio、alioss

uploadType: local

前端访问地址

domainUrl: pc: http://localhost:3100 app: http://localhost:8051 path:

文件上传根目录 设置

upload: /opt/upFiles
#webapp文件路径
webapp: /opt/webapp

shiro: excludeUrls: /test/jeecgDemo/demo3,/test/jeecgDemo/redisDemo/,/category/,/visual/,/map/,/jmreport/bigscreen2/**

阿里云oss存储和大鱼短信秘钥配置

oss: accessKey: ?? secretKey: ?? endpoint: oss-cn-beijing.aliyuncs.com bucketName: jeecgdev

ElasticSearch 6设置

elasticsearch: cluster-name: jeecg-ES cluster-nodes: 127.0.0.1:9200 check-enabled: false

在线预览文件服务器地址配置

file-view-domain: 127.0.0.1:8012

minio文件上传

minio: minio_url: http://minio.jeecg.com minio_name: ?? minio_pass: ?? bucketName: otatest

大屏报表参数设置

jmreport: mode: dev

数据字典是否进行saas数据隔离,自己看自己的字典

saas: false
#是否需要校验token
is_verify_token: true
#必须校验方法
verify_methods: remove,delete,save,add,update

xxl-job配置

xxljob: enabled: false adminAddresses: http://127.0.0.1:9080/xxl-job-admin appname: ${spring.application.name} accessToken: '' address: 127.0.0.1:30007 ip: 127.0.0.1 port: 30007 logPath: logs/jeecg/job/jobhandler/ logRetentionDays: 30

分布式锁配置

redisson: address: 127.0.0.1:6379 password: type: STANDALONE enabled: true

cas单点登录

cas: prefixUrl: http://cas.example.org:8443/cas

Mybatis输出sql日志

logging: level: org.jeecg.modules.system.mapper: info

swagger

knife4j:

开启增强配置

enable: true

开启生产环境屏蔽

production: false basic: enable: false username: jeecg password: jeecg1314

第三方登录

justauth: enabled: true type: GITHUB: client-id: ?? client-secret: ?? redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/github/callback WECHAT_ENTERPRISE: client-id: ?? client-secret: ?? redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_enterprise/callback agent-id: ?? DINGTALK: client-id: ?? client-secret: ?? redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/dingtalk/callback WECHAT_OPEN: client-id: ?? client-secret: ?? redirect-uri: http://sso.test.com:8080/jeecg-boot/sys/thirdLogin/wechat_open/callback cache: type: default prefix: 'demo::' timeout: 1h

第三方APP对接

third-app: enabled: false type:

企业微信

WECHAT_ENTERPRISE:
  enabled: false
  #CORP_ID
  client-id: ??
  #SECRET
  client-secret: ??
  #自建应用id
  agent-id: ??
  #自建应用秘钥(新版企微需要配置)
  # agent-app-secret: ??
#钉钉
DINGTALK:
  enabled: false
  # appKey
  client-id: ??
  # appSecret
  client-secret: ??
  agent-id: ??

ip: 127.0.0.1 port: 5478

友情提示(为了提高issue处理效率):

zhangdaiscott commented 2 years ago

需要把shardingjdbc的数据源注入dynamic-datasource,重写DataSourceConfiguration配置,将sharding作为主数据源。 image

image

image

image

zhangdaiscott commented 2 years ago

yf

accpman commented 2 years ago

参考最新的单体集成文档 https://www.kancloud.cn/zhangdaiscott/jeecg-boot/3085227

FuFengs commented 1 week ago

我也是要集成 shardingsphere 但是 没有找到你说的这个 image lei类