Spring AOP 中的目标对象 (Target Object) 是什么?

推荐答案

在 Spring AOP 中,目标对象(Target Object)是指被代理的对象,也就是被增强的对象。目标对象是 AOP 代理所代表的原始对象,它包含了实际的业务逻辑。AOP 代理会拦截对目标对象的方法调用,并在调用前后执行额外的逻辑(如通知)。

本题详细解读

目标对象的定义

目标对象是 AOP 中核心概念之一,它是指那些被 AOP 代理所代理的原始对象。这些对象通常包含应用程序的核心业务逻辑。在 Spring AOP 中,目标对象可以是任何 Spring 管理的 Bean。

目标对象与代理的关系

在 Spring AOP 中,代理对象是目标对象的包装器。当客户端调用目标对象的方法时,实际上是通过代理对象来调用的。代理对象会在调用目标对象的方法之前或之后执行额外的逻辑(如前置通知、后置通知等)。

目标对象的创建

目标对象通常由 Spring 容器创建和管理。Spring 容器会根据配置或注解自动创建目标对象,并在需要时为其创建代理对象。代理对象可以是 JDK 动态代理或 CGLIB 代理,具体取决于目标对象的类型和配置。

示例

假设有一个 UserService 接口及其实现类 UserServiceImplUserServiceImpl 就是目标对象。Spring AOP 会为 UserServiceImpl 创建一个代理对象,当调用 UserService 的方法时,代理对象会拦截这些调用并执行额外的逻辑。

-- -------------------- ---- -------
------ --------- ----------- -
    ---- -------------- ----------
-

------ ----- --------------- ---------- ----------- -
    ---------
    ------ ---- -------------- --------- -
        -- ----
    -
-

在 Spring 配置中,UserServiceImpl 会被声明为一个 Bean,并且可以通过 AOP 配置为其添加通知。

在这个例子中,UserServiceImpl 是目标对象,Spring AOP 会为其创建一个代理对象,并在调用 addUser 方法之前执行 logBefore 方法。

纠错
反馈