AspectJ反编译

时间:2014-09-21 12:13:28

标签: java aop aspectj

我有以下课程:     包ajia.messaging;

public class MessageCommunicator {
    public void deliver(String message) {
        System.out.println(message);
    }

    public void deliver(String person, String message) {
        System.out.println(person + ", " + message);
    }
}

以下建议:

package ajia.security;
import ajia.messaging.MessageCommunicator;

public aspect SecurityAspect {
    private Authenticator authenticator = new Authenticator();

    pointcut secureAccess()
        : execution(* MessageCommunicator.deliver(..));

    before() : secureAccess() {
        System.out.println("Checking and authenticating user");
        authenticator.authenticate();
    }
}

我编译这样的所有内容 - ajc -source 5 ajia\messaging\MessageCommunicator.java ajia\security\SecurityAspect.aj

据我所知,生成的MessageCommunicator.class已经包含了方面代码。如果标准的java反编译器能够正确地反编译该类,我就会徘徊吗?

2 个答案:

答案 0 :(得分:0)

是的,它起作用,至少对JAD反编译器

答案 1 :(得分:0)

反编译器通常通过识别编译器生成的模式来工作。 AspectJ也尝试生成遵循相同类型模式的代码(catch块的字节代码结构,这种事情)。所以通常代码会反编译,除非有一些疯狂的编织工作。 AspectJ项目将接受关于代码的错误报告,该代码不能完全解压缩并尝试解决它。​​