为包中的所有类创建切入点?

时间:2017-08-14 19:57:26

标签: java spring spring-aop

我必须创建一个可配置的切入点。任何人都可以帮助实现动态切入点。

DynamicPointcut.class

delete

ConfigurableAdvisorConfig.class

public class DynamicPointcut extends DynamicMethodMatcherPointcut {

    @Value("${custom.logging.basepackage}")
    String basePackage;

    @Override
    public ClassFilter getClassFilter() {
        return new ClassFilter() {

            @Override
            public boolean matches(Class<?> clazz) {
                List<Class<?>> classList = ClassFinder.find(basePackage);
                return classList.stream().anyMatch(x -> x.equals(clazz));
            }

        };
    }

    @Override
    public boolean matches(Method method, Class<?> targetClass, Object... args) {
        if(args.length>0){
            return true;
        }
        return false;
    }

}

2 个答案:

答案 0 :(得分:0)

您可以使用静态aspectOf工厂方法连接您的方面(您无法看到该方法,它由aspectj编译器添加)

<bean class="com.YourAspect" factory-method="aspectOf">
<property name="basePackage"
          value="${custom.logging.basepackage}" />

参考: autowiring in aspect

答案 1 :(得分:0)

在您的方案中使用Spring的AspectJ支持。

mov ax, 0x0013
int 0x10

x db 1
y db 1
videomem dd 0xa000

mov bx, y
mov ax, 0x0140 ;320
mul bx

add ax, x

mov cx, videomem
mov [cx:ax], 0x09;

jmp $
times 510-($-$$) db 0
dw 0xaa55
  1. 定义DaoAspect
  2. 在春季使用@EnableAspectJAutoProxy启用AspectJ支持
  3. 确保通过组件扫描将您的方面注册为Bean
  4. 您去了,通过这种方式您可以建议 特殊包装