前言:博文详述知识来源若依框架,可供大家一起探讨学习和分享!
一、针对本文讲解需求,我们需要先创建两个数据库进行学习,在这里我使用的是master_test和slave_test两个库,两个库中创建同一张表t_user,字段结构如下:
master_test库中t_user表:
slave_test库中t_user表:
二、项目创建,在这里博主使用eclipse创建一个多模块的maven项目,结构如下:
layduo | 父级目录 |
layduo-admin | 后台服务 |
layduo-common | 通用工具 |
layduo-framework | 框架核心 |
layduo-system | 系统配置 |
接下就直接进入主题了,其他相关包依赖pom文件,可以参考git项目代码(末尾提供)。
三、动态数据源配置,这里使用的数据源是Druid,实现数据源之间的切换通过自定义注解@DataSource,配置Aop进行切换application-druid.yml的主从数据库
layduo-admin添加项目全局配置文件和数据源配置文件(本文主要以yml文件形式讲解)
application.yml (这里主要关注server配置端口和访问路径、以及spring.profiles.active数据源文件引用就行,其他的可往后配置)
#项目相关配置
layduo:
#名称
name: Layduo
#版本
version: 4.1.0
#版本年份
copyrightYear: 2019
#实例演示开关
demoEnabled: true
#文件路径( Windows配置D:/layduo/uploadPath,Linux配置 /home/layduo/uploadPath)
profile: D:/layduo/uploadPath
#获取ip地址开关
addressEnabled: true
#开发环境配置
server:
#服务器HTTP端口,默认为80
port: 80
#应用访问路径
servlet:
context-path: /
tomcat:
#tomcat的URI编码
uri-encoding: UTF-8
#tomcat最大线程数,默认为200
max-threads: 800
#tomcat启动初始化的线程数,默认为25
min-spare-threads: 30
#日志配置
logging:
level:
com.layduo: debug
org.springframework: warn
#用户配置
user:
password:
#密码错误{maxRetryCount}次锁定10分钟
maxRetryCount: 5
#spring配置
spring:
#模板引擎
thymeleaf:
mode: HTML
encoding: UTF-8
#禁用缓存
cache: false
#国际资源信息
messages:
#国际化资源文件路径
basename: static/i18n/messages
#格式化时间格式
jackson:
time-zone: GMT+8
date-format: yyyy-MM-dd HH:mm:ss
#引用数据源文件
profiles:
active: druid
#文件上传
servlet:
multipart:
#单个文件大小
max-file-size: 10MB
#设置总上传文件大小
max-request-size: 20MB
#服务模块
devtools:
restart:
#热部署开关
enabled: true
#mybatis配置
mybatis:
#搜索指定包别名
typeAliasesPackage: com.layduo.**.domain
#配置mapper的扫描,找到所有mapper.xml映射文件
mapperLocations: classpath*:mapper/**/*Mapper.xml
#加载mybatis全局的配置文件
configLocation: classpath:mybatis/mybatis-config.xml
#pagehelper分页插件
pagehelper:
helperDialect: mysql
reasonable: true
supportMethodsArguments: true
params: count=countSql
#shiro
shiro:
user:
#登录地址
loginUrl: /login
#权限认证失败地址
unauthorizedUrl: /unauth
#首页地址
indexUrl: /index
#验证码开关
captchaEnabled: true
#验证码类型: math数据计算、char字符检验
captchaType: math
cookie:
#设置cookie的域名 默认为空,即当前访问的域名
domain:
#设置cookie的有效访问路径
path: /
#设置HttpOnly属性
httpOnly: true
#设置cookie的过期时间,单位为天
maxAge: 30h
session:
#session超时时间,-1代表永不过期(默认为30分钟)
expireTime: 30
#同步session到数据库的周期(默认1分钟)
dbSyncPeriod: 1
#相隔多久检查一次session的有效性,默认10分钟
validationInterval: 10
#同一个用户最大会话数&