Как ввести бобы с AspectJ и CDI - PullRequest
0 голосов
/ 03 апреля 2019

Я закодировал этот аспект:

@Aspect
public class LoggingCacheAspect {
    @Pointcut("call * javax.cache.integration.CacheLoader.load(*)")
    void cacheLoadCalls() {};

    @Before("cacheLoadCalls")
    public void beforeCacheCalls() {}
}

Кроме того, я использую CDI, и я с нетерпением жду возможности выяснить, как внедрить бин в этот аспект.

Полагаю, добавление аннотации @Inject не будет достаточным.

  1. Возможно ли это?
  2. Как я мог получить это?

1 Ответ

1 голос
/ 15 апреля 2019

Вам необходимо использовать перехватчик вместо аспекта. Вот пример:

@InterceptorBinding
@Target({TYPE, METHOD })
@Retention(RUNTIME)
public @interface CacheLog{
}

@Interceptor
@CacheLog
public class CacheLogInterceptor implements Serializable {

    private static final long serialVersionUID = 1L;

    @Inject
    private YourBean yourBean;

    @AroundInvoke
    public Object cacheLogMethodCall(InvocationContext ctx) throws Exception {
        //@Before

        yourBean.method();
        ...
        return ctx.proceed();
    }
}


@CacheLog
public void cacheLoadCalls() {
 ...
 ...
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...