跳到主要内容
版本:7.0.3

介绍

Hunyuan 7b 中英对照 Introductions

在AspectJ中,引入(introductions)机制允许切面声明被通知对象(advised objects)实现某个给定的接口,并代表这些对象提供该接口的实现。

您可以使用@DeclareParents注解来进行引入。此注解用于声明匹配的类型具有一个新的父类型(因此得名)。例如,给定一个名为UsageTracked的接口和一个该接口的实现类DefaultUsageTracked,以下方面声明所有服务接口的实现者也实现了UsageTracked接口(例如,通过JMX进行统计):

@Aspect
public class UsageTracking {

@DeclareParents(value="com.xyz.service.*+", defaultImpl=DefaultUsageTracked.class)
public static UsageTracked mixin;

@Before("execution(* com.xyz..service.*.*(..)) && this(usageTracked)")
public void recordUsage(UsageTracked usageTracked) {
usageTracked.incrementUseCount();
}

}

要实现的接口由被注解字段的类型决定。@DeclareParents 注解的 value 属性是一个 AspectJ 类型模式。任何匹配该类型的 Bean 都实现了 UsageTracked 接口。请注意,在前面示例的 before advice 中,服务 Bean 可以直接作为 UsageTracked 接口的实现来使用。如果需要以编程方式访问某个 Bean,你可以编写如下代码:

UsageTracked usageTracked = context.getBean("myService", UsageTracked.class);