执行 Spring AOP Around advice in DAO returns null in service
execution of Spring AOP Around advice in DAO returns null in service
我已经围绕建议编写了我的切入点和自定义,它将执行一个 Dao 方法。
切入点
@Pointcut("execution(* com.dao.*.get*(..))")
public void creditPointcut(){
}
周围建议
@Around("creditPointcut()")
public void around(ProceedingJoinPoint point) throws Throwable{
LOGGER.info("Method name: "+point.getSignature().getName()+" started");
point.proceed();
LOGGER.info("Method name: "+point.getSignature().getName()+" ended");
}
目标-道法
public Account getAccountDetails(int accntNo) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Account where accountNo=:acctNo");
query.setInteger("acctNo", accntNo);
Account account = (Account)query.list().get(0);
return account;
}
但是,这个建议 returns 在我的服务中没有帐户。
服务层方法
@Override
@Transactional(isolation=Isolation.READ_COMMITTED )
public Account getAccountDetails(int accntNo) {
Account account = accountDao.getAccountDetails(accntNo);
return account;
}
请帮助我,为什么我在 Dao 中执行周围建议后在我的服务中得到空帐户。
那是因为您没有从建议中返回任何内容:
@Around("creditPointcut()")
public Object around(ProceedingJoinPoint point) throws Throwable{
LOGGER.info("Method name: "+point.getSignature().getName()+" started");
Object ret = point.proceed();
LOGGER.info("Method name: "+point.getSignature().getName()+" ended");
return ret;
}
我已经围绕建议编写了我的切入点和自定义,它将执行一个 Dao 方法。
切入点
@Pointcut("execution(* com.dao.*.get*(..))")
public void creditPointcut(){
}
周围建议
@Around("creditPointcut()")
public void around(ProceedingJoinPoint point) throws Throwable{
LOGGER.info("Method name: "+point.getSignature().getName()+" started");
point.proceed();
LOGGER.info("Method name: "+point.getSignature().getName()+" ended");
}
目标-道法
public Account getAccountDetails(int accntNo) {
Session session = sessionFactory.getCurrentSession();
Query query = session.createQuery("from Account where accountNo=:acctNo");
query.setInteger("acctNo", accntNo);
Account account = (Account)query.list().get(0);
return account;
}
但是,这个建议 returns 在我的服务中没有帐户。
服务层方法
@Override
@Transactional(isolation=Isolation.READ_COMMITTED )
public Account getAccountDetails(int accntNo) {
Account account = accountDao.getAccountDetails(accntNo);
return account;
}
请帮助我,为什么我在 Dao 中执行周围建议后在我的服务中得到空帐户。
那是因为您没有从建议中返回任何内容:
@Around("creditPointcut()")
public Object around(ProceedingJoinPoint point) throws Throwable{
LOGGER.info("Method name: "+point.getSignature().getName()+" started");
Object ret = point.proceed();
LOGGER.info("Method name: "+point.getSignature().getName()+" ended");
return ret;
}