zoukankan      html  css  js  c++  java
  • AspectJ给类的属性打桩,进行替换。

    这个东西必须写个博客记一下了,一方面是防止以后忘记,一方面也反思一下自己的固执。

    在我们的代码中,通常会有一些配置文件的路径写死在代码里面。比如

    public class ConfigPath

    {

    private static String CONF_FILE = "/dir/xxx/ppp.propetries";

    }


    在做UT的时候,一般测试环境和真实的生产环境是不一样的,配置文件的路径肯定也是不一样的,这样在测试的时候,必须要把这个路径替换掉,而且不能影响系统原来的代码。

    在上一家公司的时候,做过这样的事情,不过在那个公司都是前面的大牛写过这样的东西,自己依葫芦画瓢,照着写一份就好了。

    记得当时是在aj文件中,fild = "xxxxx"; 这样的形式来替换的,但是前面的AspectJ关键字记不住了(其实不是这样的,自己记错了,源文件中才是这种形式,aj中还是用的pointcut)。自己固执的认为就是这个形式的,在网上查了很多Aj的资料,都没找到这种形式打桩的(其实现在网上Aj的资料也不多)。

    在此还是要感谢一下表哥和劢神,最后还是他们给我说的怎么弄。


    要想替换掉上面那个ConfigPath类中的 CONF_FILE 属性的值, 应该在AJ文件中这样写一个切面:

    pointcut setConfFile(String fileName): set(private static String ConfigPath.CONF_FILE)&&args(fileName);  // set()里面的private static修饰符也可以不要

    around(String fileName):setConfFile(fileName)

    {

    proceed("这里是UT里面的希望替换的新内容");

    }


    这种方法貌似还是不能给final的变量打桩,还需要继续研究

  • 相关阅读:
    Spring Boot:拦截器与过滤器
    [Locked] Maximum Size Subarray Sum Equals k
    [Locked] Generalized Abbreviation
    [Locked] Meeting Room I && II
    [Locked] Zigzag Iterator
    [Locked] Paint House I & II
    [Locked] Number of Connected Components in an Undirected Graph
    [Locked] Best Meeting Point
    [Locked] Sparse Matrix Multiplication
    [Locked] Two Sum
  • 原文地址:https://www.cnblogs.com/keanuyaoo/p/3327578.html
Copyright © 2011-2022 走看看