Java Aspectj在编织外罐中的应用
我有一个如下的java文件Java Aspectj在编织外罐中的应用,java,aspectj,Java,Aspectj,我有一个如下的java文件 package sample; public class Profile { public static String myName(String name) { myhobby("Football"); return name; } public static String myhobby(String hobby) { return hobby
package sample;
public class Profile
{
public static String myName(String name)
{
myhobby("Football");
return name;
}
public static String myhobby(String hobby)
{
return hobby;
}
}
我构建了这个文件,并将jar文件添加到下面的代码中
导入示例.配置文件
public class Hello
{
public static String sayHello(String name)
{
String enter=Test.myName("Ganguly");
return name;
}
public static void main(String[] args)
{
String next = sayHello("Company");
}
}
我写的方面如下
pointcut printMessage(String name) : call(public static String myhobby(..)) && args (name));
before(String name) : printMessage(name) {
System.out.println("value is: "+ name);
}
但是当我运行程序时…它不会打印函数的参数值。。。
如果我错了,有人能纠正我吗。。。
提前感谢…默认情况下,AspectJ IDE仅使用同一项目的方面编织当前项目,对于其他场景,我们需要项目的附加路径或方面路径
从第二个项目(您的测试项目)的属性对话框>“AspectJ Build”页面>InPath,将您的jar添加到列表中(jar同时自动添加到Java构建路径库)。谢谢您…它工作了..很好..我还有一个疑问…关于AspectJ..我可以问您吗?谢谢您。。。我在eclipse中安装了aspectj插件,然后创建了一个新的aspectj项目,其中创建了一个java类和.aj文件。我通过在Aspectj构建和运行方式->Java应用程序的路径中导入jar来编译它。然后它编译并成功运行指定的通知。然后我将项目导出为一个jar。然后我创建了一个常规java项目,然后导入导出的jar,然后调用常规java项目中的一个函数(为其编写了通知)。但是当函数被调用时,通知永远不会运行。你能告诉我为什么…不导出为普通jar,我们应该尽量使用确切的选项,'运行方式>Java应用程序可以工作'可能来自AJDT插件启用JDT编织,似乎'导出方式'为我们提供了另一个选项'导出到jar并支持AspectJ',请尝试“Jar with AspectJ support”。是的…我将Jar导出为export->Jar with AspectJ support…但是建议不起作用说,你的项目A是普通项目A的类,B是AJ项目B,C是普通项目C的类,当C调用A时,它不起作用,如果C调用B(B调用A),那么它就起作用了,因为B在B编译过程中已经编织好了,但是C不是AspectJ项目,它不是编织的。如果我们希望在C直接调用A的过程中进行编织,那么项目C应该是AspectJ项目,A.jar被添加到项目C的“In Path”中,B.jar被添加到项目C的“ApsectJ Path”中,或者我们改为使用运行时编织而不是编译时编织。