stevenfeng 2009-04-21 12:39
浏览 300
已采纳

spring中的aop事务应用

spring中用aop,只对其中的一个方法有用,比如所说,权限检查,我想对add方法进行权限检查,在add方法之前进行检查,但是我不知道怎么配置
class="org.springframework.orm.hibernate3.HibernateTransactionManager">



<bean id="transactionInterceptor"
class="org.springframework.transaction.interceptor.TransactionInterceptor"
>
    <property name="transactionManager">
        <ref bean="transactionManager"/>
    </property>
    <property name="transactionAttributes">
        <props>
            <prop key="add*">
            PROPAGATION_REQUIRED,-AccountException
            </prop>
        </props>
    </property>
</bean>

再忘下就不会配置了,有谁能给指点一下啊

[b]问题补充:[/b]
我还想增加日志功能,比如说,可以在add方法之前进行,也可以在add之后进行,用annotation,也可以用下一种方式,
aop:config



/aop:aspect
/aop:config

,我把spring-aop-2.5.xsd导入的时候有错误,我不想用上面的方法,还有更好的方法吗
[b]问题补充:[/b]
我的意思是说,利用动态代理,对service(里面有好多方法)里面的add方法之前增加日志功能,这个代码怎么实现

  • 写回答

6条回答 默认 最新

  • wanghaolovezlq 2009-04-21 13:53
    关注

    [code="java"]
    import java.lang.reflect.Method;

    import org.aopalliance.intercept.MethodInterceptor;
    import org.aopalliance.intercept.MethodInvocation;
    import org.apache.log4j.Logger;

    public class LogInterceptor implements MethodInterceptor {
    private static Logger log = Logger.getLogger(LogInterceptor.class);
    public Object invoke(MethodInvocation invocation) throws Throwable {

        Method m = invocation.getMethod();
        Class c = m.getDeclaringClass();
        StringBuilder sb = new StringBuilder();
        sb.append("类名为");
        sb.append(c.getName());
        sb.append("调用方法名为");
        sb.append(m.getName());
    
    
        log.debug(sb.toString()+"--------开始---------");
    
        Object ret = invocation.proceed();
    
        log.debug(sb.toString()+"--------结束---------");
    
        return ret;
    }
    

    }

    再到配置文件里
    增加

    <bean id="logInterceptor"
    class="LogInterceptor "



    //这里配置你要代理的bean的名称
    *service



    logInterceptor
    transactionInterceptor


    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?