NutzCN Logo
问答 spring自定义aop不生效
发布于 964天前 作者 daydayup 1286 次浏览 复制 上一个帖子 下一个帖子
标签:

<aop: aspectj-autoproxyproxy-target-class="true" />

安装tcc的官网例子

    @Override
    @Compensable(confirmMethod = "confirmMakePayment", cancelMethod = "cancelMakePayment")
    @Aop(TransAop.READ_COMMITTED)
    public void Test() {
        memberService.updateMember(null,1);
//        int i = 5 / 0;
        log.info("========================确认订单");
    }


    /**
     * 确认付款
     */
    @Aop(TransAop.READ_COMMITTED)
    public void confirmMakePayment() {
        log.info("========================确认付款");
    }


    /**
     * 取消付款
     */
    @Aop(TransAop.READ_COMMITTED)
    public void cancelMakePayment() {
        log.info("========================取消付款");
    }

但是aop貌似没有生效

42 回复

好像是要放在controller里面的?

先说一下在干啥。。。 被ioc接管的对象才能aop

哦,你在集成tcc吗? 来嘛,码云开个库

我在整合tcc到nutzboot 但是发现tcc的注解aop并没有生效

tcc-transaction不和底层使用的rpc框架耦合,也就是使用doubbo,thrift,web service,http等都可。tcc-transaction-http-sample示例演示了不依赖底层rpc框架情况下如何使用tcc-transaction。

用到是nutzwk, 那dubbo版能工作吧?

哦,你想更近一步,做个独立的集成呀? 很好很强大

是啊,但是他那个自定义的aop没有生效

如果你通过spring来拦截, 那么, 调用的时候, 需要从spring ioc取出对象继续操作

我有加了spring扫码的注解

用到时候,要从spring ioc取出来哦,这个服务的实现对象

    @Compensable(confirmMethod = "confirmMakePayment", cancelMethod = "cancelMakePayment")

不能直接走nutz ioc注入哦, 要从spring容器取

有日志贴一下不? 看看能不能有点提示

我上传上码云了,可以直接启动,cms,member 这两个项目 然后api调用cms

导入了, 还没能跑起来

为什么 wk-tcc 没有pom.xml呢?

好像只是在MainLauncher的init方法里面初始化了一下spring ioc, 然后在方法上加了一个注解???

没有看出"从spring ioc获取对象"这一操作呀

哦,调用的时候也要用注解从spring中取出来吗

是用代码拿出那个实例出来用

我感觉你跑歪了... 思路不太对的样子, 或者是因为我不熟tcc

我建议看看tcc里面的http server的demo, 那个不依赖具体框架的样子, 可以尝试一下

主要是没找到他的文档, 还不明白他的核心api的调用流程

@Component
@IocBean(args = {"refer:dao"})
@Service(interfaceClass=MemberService.class)
public class MemberServiceImpl extends BaseServiceImpl<Member> implements MemberService 

加了Component 这个可以被spring被注入吗

从spring ioc上下文拿出来才可以

倒不需要每次, 属性为null就取一次咯

添加回复
请先登陆
回到顶部