kikione
V2EX  ›  Java

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

  •  
  •   kikione · Oct 9, 2021 · 2469 views
    This topic created in 1702 days ago, the information mentioned may be changed or developed.

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

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

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