我有一个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课上使用AOP吗?那么替代方案是什么?