mirror of
https://gitee.com/huoyo/ko-time.git
synced 2025-12-06 08:48:30 +08:00
4.3 KiB
4.3 KiB
存储多样性
v2.2.0开始支持数据库存储接口信息功能,可在内存和数据库中进行切换
内存存储
更改配置:
ko-time.saver=memory #默认存储方式,无需此配置也行
Redis存储
1.更改配置:
ko-time.saver=redis
ko-time.data-prefix=xxx #如果多个项目共用一个redis,最好配置此项,通过该名称区分数据
#redis配置
spring.redis.host: xxx
spring.redis.port: xxx
spring.redis.password: xxx
2.引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
3.其他
项目默认使用Springboot的StringRedisTemplate对象,无需其他操作 如果对其不满意,可以自定Bean如:
@Bean("redisbean")
public StringRedisTemplate getRedisTemplate(RedisConnectionFactory connectionFactory){
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(connectionFactory);
return template;
}
然后配置
ko-time.redis-template: redisbean
数据库存储
注: 使用mysql
1.更改配置:
ko-time.saver=database
请引入MySQL相关依赖 注:默认使用项目的数据源,多数据源情况下默认使用主数据源,如果没有主数据源,请在配置中指定数据源:
ko-time.data-source=数据源名称
2.数据表创建
数据库字段长度不够的自行调整
create table ko_method_node (
id varchar(400) not null primary key comment '主键' ,
name varchar(400) null comment '类名+方法名' ,
class_name varchar(400) null comment '类名' ,
method_name varchar(400) null comment '方法名' ,
route_name varchar(400) null comment '路由,controller才有' ,
method_type varchar(64) null comment '方法类型'
) comment '方法信息表';
create table ko_method_relation (
id varchar(400) not null primary key comment '' ,
source_id varchar(400) null comment '调用方id' ,
target_id varchar(400) null comment '被调用方id' ,
avg_run_time numeric(10,2) null comment '平均耗时' ,
max_run_time numeric(10,2) null comment '最大耗时' ,
min_run_time numeric(10,2) null comment '最小耗时'
) comment '方法调用关系表';
;
create table ko_exception_node (
id varchar(400) not null primary key comment '主键' ,
name varchar(400) null comment '异常名' ,
class_name varchar(400) null comment '类名' ,
message varchar(400) null comment '异常消息'
) comment '异常表';
create table ko_exception_relation (
id varchar(400) not null primary key comment '' ,
source_id varchar(400) null comment '调用方法id' ,
target_id varchar(400) null comment '异常id' ,
location int null comment '异常位置'
) comment '异常关系表';
create table ko_param_ana (
source_id varchar(400) null comment '调用方法id' ,
params varchar(400) null comment '参数组合,-分隔' ,
avg_run_time numeric(10,2) null comment '平均耗时' ,
max_run_time numeric(10,2) null comment '最大耗时' ,
min_run_time numeric(10,2) null comment '最小耗时'
) comment '参数分析表';
方法调用信息扩展监听
如果需要做方法调用信息进行监听,然后做一些扩展的,可以使用此方法
1.新建监听类,实现InvokedHandler,并能加上注解@KoListener即可
@KoListener
public class TestInvoke implements InvokedHandler {
@Override
public void onInvoked(MethodNode current, MethodNode parent, Parameter[] names, Object[] values) {
System.out.println("调用的方法:"+current);
System.out.println("调用当前方法的上一级方法:"+parent);
System.out.println("调用的方法-参数名称:"+names);
System.out.println("调用的方法-具体参数:"+values);
}
}
2.如果需要监听异常情况
实现InvokedHandler的默认方法即可
@KoListener
public class TestInvoke implements InvokedHandler {
@Override
public void onInvoked(MethodNode current, MethodNode parent, Parameter[] names, Object[] values) {
}
@Override
public void onException(MethodNode current, MethodNode parent, ExceptionNode exception, Parameter[] names, Object[] values) {
System.out.println("异常:"+exception);
}
}