Java 从LTW的属性文件中读取Aspectj切入点定义

Java 从LTW的属性文件中读取Aspectj切入点定义,java,aop,guice,aspectj,pointcut,Java,Aop,Guice,Aspectj,Pointcut,我在guice应用程序中使用aspectj LTW,并试图为配置文件控制的方面创建切入点定义。例如: pointcut publicOperation() : execution(*** READ THIS FROM CONFIG/PROPERTY FILE ****); Object around() : publicOperation() { ..... } 我有哪些可能的选择 谢谢。按照建议将切入点定义放到aop.xml中。这不需要编译吗?你说的是在编译之前做一些

我在guice应用程序中使用aspectj LTW,并试图为配置文件控制的方面创建切入点定义。例如:

pointcut publicOperation() : execution(*** READ THIS FROM CONFIG/PROPERTY FILE ****);
Object around() : publicOperation() {
        .....
    }
我有哪些可能的选择


谢谢。

按照建议将切入点定义放到aop.xml中。

这不需要编译吗?你说的是在编译之前做一些过滤器替换吗?是的,它将在项目第一次生成时编译,但在那之后,我只想能够从外部文件修改切入点表达式,而不必重新生成。只需要重新启动服务器,LTW就可以获取新的切入点。我对aspectj了解不多,但这些声明不是静态的吗,就像在运行时不可更改一样?谢谢你的建议。这样,我必须做一个抽象的方面,并使我的所有方面扩展它。因为只有扩展抽象方面的具体方面才能在aop.xml中定义切入点。此外,我还必须将aop.xml外部化,以便在不构建aspectj项目的情况下修改它?这是个问题吗?至少这是一个可行的解决方案。您在另一句话中说:“我只想能够从外部文件修改切入点表达式,而无需重建。”答对了!我只是给了你你想要的,这甚至是一个没有肮脏把戏的标准方式。你还想要什么?是的,是的!这肯定会奏效的。我希望有一种方法可以允许系统管理员(不需要了解aspectj)修改一个属性文件,比如(MONITORED_METHOD=execution(……),但如果不可能的话。你的答案肯定会被接受;)您可以教他们在aop.xml的所有适当位置更改代码,或者构建一个中间层,允许他们只输入方法名称,然后使用一个小型生成器工具将它们合并到适当的位置。这取决于你想走多远,以便让他们更容易。