gpt4 book ai didi

java - Spring方面如何在内部工作?

转载 作者:IT老高 更新时间:2023-10-28 13:46:28 25 4
gpt4 key购买 nike

Say Service 调用需要应用日志方面(注释)的 Dao 类。我想知道如何方面实际上得到应用。

根据我在Service对象下注入(inject)DAO时的理解,spring发现有一些方面(在本例中为日志记录)是为 DAO 配置的,因此它注入(inject)代理对象而不是实际的目标对象。现在,当对 DAO 中的任何方法进行实际调用时,代理会应用方面,然后调用实际目标目的。那是对的吗 ?我也相信这被称为运行时编织。

另一方面,加载时间编织(使用 javaagent 配置)也可以进行字节码操作是针对需要应用方面的类完成的。所以代理在这里没有出现。

如果我错了,请纠正我,因为这是所有 spring 模块的基础?

最佳答案

你的理解是对的。 Spring AOP 是基于代理的。 Spring 使用 JDK 代理(即使被代理的目标实现了至少一个接口(interface))或 CGLIB 代理(如果目标对象没有实现任何接口(interface))来为给定的目标 bean 创建代理。

除非配置为其他方式,否则 Spring AOP 执行运行时编织。但是,您可以设置 Spring 以通过 AspectJ 进行加载时编织。查看documentation link了解更多详情。

引用 Spring AOP proxying internals

关于java - Spring方面如何在内部工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27580958/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com