我已经写了我的切入点和自定义围绕建议,它将执行一个 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; 
    } 

但是,此建议在我的服务中返回空帐户。

服务层方法
@Override 
    @Transactional(isolation=Isolation.READ_COMMITTED ) 
    public Account getAccountDetails(int accntNo) { 
        Account account = accountDao.getAccountDetails(accntNo); 
        return account; 
    } 

请帮助我为什么在 Dao 中执行了 around 建议后,我的服务中的帐户为空。

请您参考如下方法:

那是因为您没有从建议中返回任何内容:

@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; 
 
} 


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!