java service自己引用自己,longcat也是蠢到哭

gpl 2026-07-01 15:14 1

修改了一大堆代码,还发现自己引用自己,这coding 能力是真的牛

最新回复 (12)
  • Execution 07-01 15:20
    1

    加到规则约束中去,避免之后再这么干。

  • qq271859852 07-01 15:24
    2

    我并不觉得这种姿势有什么问题,自己引用自己是spring界常规的使用姿势呀,毕竟你如果要调用当前类被切面切中的方法,就只能用这种方式,或者 AopContext.currentProxy() 拿到当前的代理类,才能执行切面方法

  • coderZoe 07-01 15:27
    3

    是的,原因正如楼上佬友所说,springboot常见的一些aop失效场景就是this调用,通过依赖注入自己,解决aop失效是再正常不过的事了,比如service有A、B两个方法,你在A上加了@Transaction,然后A内通过 this.B(),实际并不能把事务传递给B,典型的事务失效场景

  • coderZoe 07-01 15:28
    4

    很明显通过注释,原作者已经告诉了你为什么要注入自己了

  • gpl 楼主 07-01 15:31
    5

    能用是能用,如果要这么用,我更倾向于SpringContextUtil再拿一次。 但是我这个代码明显是可以直接外部调用的。

  • nekomiya 07-01 15:31
    6

    这样写临时用其实也没啥太大毛病,就是不规范可能有边界问题,可以提示词约束下

  • gpl 楼主 07-01 15:33
    7

    longcat体现下来还是太拉,整理业务花了大半天,最后生成重复的代码,然后原始不相关的代码,也能去改一波,真的是服了

  • gpl 楼主 07-01 15:34
    8

    主打一个我很快,但是我不一定准确

  • qq271859852 07-01 16:02
    9

    (帖子已被作者删除)

  • qq271859852 07-01 16:03
    10

    嗯,你图片里只有局部注入的代码,我无法窥视全局看你是怎样使用的,就单纯这样注入自己的方式而言,其实很常用,我在不同的互联网公司都见过很多类似的代码。


    至于你说的用SpringContextUtil的方式,只是【个人口味】的区别,并无高下之分。


    如果你不喜欢这种编码方式,在rules里定死不要让AI这么用就好了。


    AI之所以这么写,也无非是学习的语料中很多种使用姿势,所以它会拿来用,也不是出于它很垃圾只会写这种代码

  • qq271859852 07-01 16:05
    11

    另外,你说longcat很笨,也许吧,我确实没用过,主要claude用的多 ^-^


    只是从你截图的这一部分分析大概没问题,至于全局去看他生成的代码是不是很傻,确实只有佬才知道啦

  • jons 07-01 16:06
    12

    longcat不是退役了吗,又出新版本了?

* 帖子来源Linux.do
返回