博客系统数据库参数注入功能实现
本站博客实现admin 发布于:2022-05-09 10:26:14
阅读:loading
本站后台管理功能中提供了“参数管理”的功能,主要是将一些功能上的配置参数存储至数据库表中,减少在application.yaml中的参数配置,同时提供页面在线管理,支持参数修改后的立即生效。(此功能类似参数配置中心,但仅是博客站点的一个小小功能)。主要是提供数据库表来进行参数配置,多以功能模块的内部参数为主,同时在服务器启动时读取该表中的所有参数,将其注入至对应功能中去,详细介绍参考如下。
注入机制 | 服务器启动完毕,读取参数配置表的数据以及所有的参数配置类组件,通过对应注解和调用setter属性方法进行参数设置,利用Spring Bean单例的特性实现对参数数据的内存存储 |
参数读取 | 通过Aop的方式读取特殊的参数配置类中的所有get开头的属性方法,从内存中读取最新数据对象,将参数值获取并返回 |
使用方式 | 通过参数对象的形式,注入其属性值,并作为Spring Bean对象的形式对外注入访问 |
数据注入 | 通过Javabean的方式注入对象中的各个包含参数注入的注解,通过其getter/setter进行参数赋值和访问 |
赋值类型 | 支持String、Integer、Double、Float、Boolean、Date、Map等多种数据类型 |
匹配模式 | 支持完全匹配、前缀匹配、后缀匹配、按组匹配、默认匹配等多种参数匹配方式 |
package cn.chendd.toolkit.dbproperty.commonents;
import ...;
/**
* 参数表数据映射对象
*
* @author chendd
* @date 2019/9/13 8:05
*/
@Data
@DbValueConfiguration
@Component
public class SysDbValueMapping extends AbstractSysDbValueMapping {
@DbValue
private String httpServerIp;
@DbValue("http.server.ip")
private String httpServerIpBak;
@DbValue("http.server.name")
private String httpServerName;
@DbValue("http.server.port")
private Integer httpServerPort;
@DbValue(suffix = "key.pi")
private Double piSuffix;
@DbValue(prefix = "test.key")
private Double piPrefix;
@DbValue("test.status")
private Boolean status;
@DbValue(prefix = "http.server")
private Map<String , String> servers;
@DbValue(group = "test.database")
private Map<String , String> databases;
@DbValue(prefix = "http", suffix = "name")
private Map<String , String> connects;
@DbValue("test.database.host1")
private String mysqlPort;
@DbValue(group = "third.login.github")
private GithubConfig githubConfig;
}
【代码说明】
1.@DbValue无参数表示将httpServerIp的驼峰变量命名转换为http.server.ip的对应参数;
2.@DbValue("http.server.ip")对应读取表中的key;
3.@DbValue(prefix = "test.key")表示将key的前缀为test.key的参数读取注入;
4.@DbValue(suffix = "key.pi")表示将key的后缀为key.pi的参数读取并注入;
5.@DbValue(prefix = "http.server")表示将key的前缀为http.server开头的所有key读取并赋值至Map<String , String>中;
6.@DbValue(group = "third.login.github")表示将一个组group为third.login.github的所有参数赋值至GithubConfig对象中;
CREATE TABLE `sys_db_value` (
`id` bigint(20) NOT NULL COMMENT '主键ID',
`key` varchar(64) DEFAULT NULL COMMENT '参数名',
`value` varchar(2048) DEFAULT NULL COMMENT '参数值',
`group` varchar(32) DEFAULT NULL COMMENT '参数组名',
`remark` varchar(512) DEFAULT NULL COMMENT '参数备注',
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='系统参数配置表';
(列表管理)
(新增/修改页面)
更多代码实现可见本站开放的源代码。
点赞