私は春のaopを使用するときにポイントカット冬眠をする方法?

私はセッションのエントリーポイントだと思いますが、失敗したようです。私の設定かどうか? ここに私の春の設定です。



           
        
    

私のクラスは続きます

    public Object aroundAdvice(ProceedingJoinPoint pjp) throws Throwable {
    System.out.println("aroundAdvice");
    String hql = (String) pjp.getArgs()[0];
    if(hql.indexOf("update") > -1){
        StringBuilder sb = new StringBuilder();
        int temp = hql.indexOf("where");
        if(temp > -1){
            sb.append(hql.subSequence(0, temp));
            sb.append(",updateDate = :updateDate ");
            sb.append(hql.substring(temp));
        }else{
            sb.append(",updateDate = :updateDate ");
        }
        hql = sb.toString();
        mark = true;
    }
    Object retVal = pjp.proceed(new Object[] { hql });
    return retVal;
}
0
nl ru de

1 答え

load-time weaving またはコンパイル時の織り方、Spring AOPはプロキシですベース。これは、Springによって作成されたオブジェクト(つまりSpring Bean)でのみポイントカットすることができることを意味します。通常の new SharedSessionContract()構文を使用して、Hibernate内で作成される可能性が最も高い内部Hibernateオブジェクトをポイントカットしようとしています。

0
追加された