У меня есть один класс POJO, для которого я должен угнать один из его методов своей собственной логикой.
POJO:
CustomerModel
package com.test.model;
public class CustomerModel
{
public static final String EMAIL = "email";
public static final String uid = "uid";
public static final String DEFAULTB2BUNIT = "defaultB2BUnit";
@Accessor(qualifier = "defaultB2BUnit", type = Accessor.Type.GETTER)
public B2BUnitModel getDefaultB2BUnit()
{
return getPersistenceContext().getPropertyValue(DEFAULTB2BUNIT);
}
...
}
Этот класс POJO генерируется автоматически, и я не могу его изменить. Я хочу использовать функцию Spring AOP, чтобы перехватить метод getDefaultB2BUnit (), чтобы я мог выполнить свою логику для отправки правильного B2BUnit.
Пока я сделал это ..
Аспект -
@Aspect
public class AccountSelectionAspect
{
@Resource
private AccountSelectionService accountSelectionService;
@Around("execution(* com.test.model.CustomerModel.getDefaultB2BUnit())")
public Object decideAround(final ProceedingJoinPoint joinPoint) throws Throwable
{
final B2BUnitModel account = accountSelectionService.getSelectedAccount();
if (account == null)
{
return joinPoint.proceed();
}
return account;
}
}
spring.xml -
<aop:aspectj-autoproxy />
<bean class="com.test.core.account.aspect.AccountSelectionAspect"/>
Теперь этот аспект вообще не вызывает. Всякий раз, когда делается вызов для извлечения defaultB2BUnit, AOP не захватывает метод.
final CustomerModel customer = currentUser;
B2BUnitModel defaultB2BUnit = customer.getDefaultB2BUnit();
Просьба предложить.
Обновление -
Могу ли я не использовать АОП в классе POJO? Какая альтернатива тогда?