V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
kikione
V2EX  ›  Java

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

  •  
  •   kikione · 60 天前 · 1209 次点击
    这是一个创建于 60 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

    11 条回复    2021-10-09 18:02:49 +08:00
    JYii
        1
    JYii  
       60 天前
    我缓缓打出一个?
    chendy
        2
    chendy  
       60 天前
    C 模块自己不连数据库,用业务模块的数据库连接,或者数据源,或者其他什么东西注入给自己
    kikione
        3
    kikione  
    OP
       60 天前
    @JYii 这块我不太清楚 所有提问的有点问题
    Edsie
        4
    Edsie  
       60 天前
    C 模块注入数据库服务就行了吧
    Saurichthys
        5
    Saurichthys  
       60 天前
    可以考虑 c 模块只是提供保存日志方法,给 A 和 B 进行调用,至于数据链接信息就在 A 和 B 的 web 项目初始化就行了呀
    fkdog
        6
    fkdog  
       60 天前
    这种需求建议和业务代码解耦开来。
    1. 将日志写入 mq,mq 另一端写入数据库.
    2. 将日志写入磁盘文件,使用 filebeat 等工具进行采集
    3. 将日志写入做成一个 rpc 服务,分别给 A 和 B 去调用。
    wolfie
        7
    wolfie  
       60 天前
    程序日志 logback 、log4j 那种直接生成日志文件。
    请求日志在网关拿。
    具体什么业务要在 AOP 记录
    JYii
        8
    JYii  
       60 天前
    @kikione 日志模块 aop 写好逻辑,别的模块引入调用就完事了啊,是缺少 db 的依赖做不了一些事情吗
    Saxton
        9
    Saxton  
       60 天前
    @fkdog 说的没错 业务逻辑的日志 可以用 MQ 储存到数据库 异步落地, 所有的模块只管推到 MQ, 普通的输出日志可以按照 @wolfie 说的生成文件, 要区分业务日志和输出日志,我们的系统就是这样的
    Saxton
        10
    Saxton  
       60 天前
    @JYii 分布式吗,我感觉你的理解有一定偏差,你完全可以单独跑一个独立的日志服务,其他服务只管推送到 MQ,
    同时其他服务可以采用 AOP 的方式推入到 MQ,这样子就从逻辑层上解耦出来了
    kikione
        11
    kikione  
    OP
       60 天前
    @JYii 明白了,我以为缺了 DB 做不了
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1904 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 88ms · UTC 16:35 · PVG 00:35 · LAX 08:35 · JFK 11:35
    ♥ Do have faith in what you're doing.