zoukankan      html  css  js  c++  java
  • AOP within表达式不生效

    首先看Aspect的代码

    @Pointcut("within(com.davidhu.shopguide.admin.mapper..*) + " || within(com.davidhu.shopguide..*.impl..*)"
    " ) public void applicationPackagePointcut() { // Method is empty as this is just a Pointcut, the implementations are in the // advices. }

    需要被advice执行的方法

    public interface CrawlItemMapper extends BaseMapper<CrawlItem> {
        @Delete("delete from crawl_items where DATEDIFF(now(),item_create_time) > 4")
        int deleteHistoryItems();
    
    
        @Select("select id,goods_source_sn,goods_info_url,source,url_code," +
                "thumb_url,zhi_count,buzhi_count,star_count,comments_count,mall,title,emphsis,detail,detail_brief," +
                "label,category_text,item_create_time,item_update_time,main_image_url,big_image_urls,small_image_urls," +
                "price_text,price,unit_price,actual_buy_link,transfer_link,transfer_result,transfer_remark,coupon_info,taobao_pwd," +
                "score,score_minute,keywords,status,remark,creator," +
                "creator_id,last_operator,last_operator_id from crawl_items where TIMESTAMPDIFF(HOUR,item_create_time,now()) > 24")
        List<CrawlItem> getItemsAfter24Hours();
    
        @Select("select id, goods_source_sn,goods_info_url,source,url_code," +
                "thumb_url,zhi_count,buzhi_count,star_count,comments_count,mall,title,emphsis,detail,detail_brief," +
                "label,category_text,item_create_time,item_update_time,main_image_url,big_image_urls,small_image_urls," +
                "price_text,price,unit_price,actual_buy_link,transfer_link,transfer_result,transfer_remark,coupon_info,taobao_pwd," +
                "score,score_minute,keywords,status,remark,creator," +
                "creator_id,last_operator,last_operator_id from crawl_items_48h where TIMESTAMPDIFF(HOUR,item_create_time,now()) > 48")
        List<CrawlItem48h> getItemsAfter48Hours();
    
        @Select("select id, goods_source_sn,goods_info_url,url_code,thumb_url,zhi_count,buzhi_count,star_count,comments_count,mall,title,emphsis,detail,detail_brief," +
                "label,category_text,item_create_time,item_update_time,main_image_url,big_image_urls,price_text,actual_buy_link,transfer_link," +
                "taobao_pwd,transfer_result,transfer_remark,coupon_info,score,score_minute,keywords,status,remark from crawl_items where url_code=#{urlCode} for update")
        CrawlItem getItemByUrlCodeForUpdate(@Param("urlCode") String urlCode);
    
        @Select("select goods_info_url from crawl_items where status=1 order by score_minute desc, id desc limit 0,40")
        List<String> getFirstRecrawlItems();
    }

    service方法

            CrawlItem item = crawlItemMapper.getItemByUrlCodeForUpdate(code);

    不知为何crawlItemMapper的方法无法触发advice,但servie方法就可以。

    如果把within改成execution就没问题

        /**
         * Pointcut that matches all Spring beans in the application's main packages.
         */
        @Pointcut("execution(* com.davidhu.shopguide.admin.mapper.CrawlItemMapper.*(..))" )
        public void applicationPackagePointcut() {
            // Method is empty as this is just a Pointcut, the implementations are in the
            // advices.
        }

    根据文档,对within和execution的解释是这样(https://www.eclipse.org/aspectj/doc/released/progguide/semantics-pointcuts.html)

    execution(MethodPattern)Picks out each method execution join point whose signature matches MethodPattern.

    within(TypePattern)Picks out each join point where the executing code is defined in a type matched by TypePattern.

    看起来没有什么问题,我猜是由于mybatisplus对CrawlItemMapper的处理造成的,问题还未知。

    喜欢艺术的码农
  • 相关阅读:
    CentOS6 破解登录密码
    CentOS 添加硬盘创建并挂载分区
    CentOS 安装开发工具包
    CentOS vim的使用
    CentOS tcpdump的使用实例
    CentOS7没有ifconfig/route/arp/netstat等命令的解决方案
    CentOS 查看系统 CPU 个数、核心数、线程数
    Linux系统中的load average
    Python基础-shelve模块
    Python基础-configparser和hashlib模块
  • 原文地址:https://www.cnblogs.com/zjhgx/p/15170745.html
Copyright © 2011-2022 走看看