Java 关于构建公共模块的问题

2021-10-09 14:37:07 +08:00
 kikione

1,有两个业务模块 A 和 B 2,A 和 B 的 contronller 都需要记录日志去数据库 3,我想在 公共模块 C 用 AOP 去做。

C 公共模块是不是需要连接数据库,配置一些信息。但是一般公共模块我看不配置的

1876 次点击
所在节点    Java
11 条回复
JYii
2021-10-09 14:41:47 +08:00
我缓缓打出一个?
chendy
2021-10-09 14:41:54 +08:00
C 模块自己不连数据库,用业务模块的数据库连接,或者数据源,或者其他什么东西注入给自己
kikione
2021-10-09 15:05:30 +08:00
@JYii 这块我不太清楚 所有提问的有点问题
Edsie
2021-10-09 15:25:51 +08:00
C 模块注入数据库服务就行了吧
Saurichthys
2021-10-09 15:29:14 +08:00
可以考虑 c 模块只是提供保存日志方法,给 A 和 B 进行调用,至于数据链接信息就在 A 和 B 的 web 项目初始化就行了呀
fkdog
2021-10-09 15:30:49 +08:00
这种需求建议和业务代码解耦开来。
1. 将日志写入 mq,mq 另一端写入数据库.
2. 将日志写入磁盘文件,使用 filebeat 等工具进行采集
3. 将日志写入做成一个 rpc 服务,分别给 A 和 B 去调用。
wolfie
2021-10-09 15:47:30 +08:00
程序日志 logback 、log4j 那种直接生成日志文件。
请求日志在网关拿。
具体什么业务要在 AOP 记录
JYii
2021-10-09 16:56:06 +08:00
@kikione 日志模块 aop 写好逻辑,别的模块引入调用就完事了啊,是缺少 db 的依赖做不了一些事情吗
Saxton
2021-10-09 17:40:39 +08:00
@fkdog 说的没错 业务逻辑的日志 可以用 MQ 储存到数据库 异步落地, 所有的模块只管推到 MQ, 普通的输出日志可以按照 @wolfie 说的生成文件, 要区分业务日志和输出日志,我们的系统就是这样的
Saxton
2021-10-09 17:44:23 +08:00
@JYii 分布式吗,我感觉你的理解有一定偏差,你完全可以单独跑一个独立的日志服务,其他服务只管推送到 MQ,
同时其他服务可以采用 AOP 的方式推入到 MQ,这样子就从逻辑层上解耦出来了
kikione
2021-10-09 18:02:49 +08:00
@JYii 明白了,我以为缺了 DB 做不了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/806671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX