【问题标题】:Use AspectJ in an android library project在 android 库项目中使用 AspectJ
【发布时间】:2013-04-07 16:25:07
【问题描述】:

我想尝试将 AspectJ 用作 android 库项目的一部分。我尝试创建一个 android 库项目并使用基于注释的样式来创建切入点。

问题是库项目的各个方面没有被编织到添加了我的库项目的 android 应用程序中。

我的 Android 库项目中定义的方面很少。类似的东西

@AfterReturning(pointcut = "execution(* *.*(..)) && !this(com.xyz.aspects.xyz)")
public void abc(JoinPoint jp) 
{ 
    dosomething;
}

我已将此库项目添加到我的 android 应用程序中。然而,'dosomething' 没有被执行。有什么建议吗?

【问题讨论】:

  • 我的建议是:向我们展示一些代码和配置细节。否则就像问:“我想做饭。有什么建议吗?”
  • @kriegaex 添加了一些代码。立即查看

标签: android aspectj


【解决方案1】:

终于解决了这个问题。我将库项目添加到我的方面路径中,事情开始起作用了。

【讨论】:

【解决方案2】:

怎么样

execution(* *(..)) && !within(com.xyz.aspects.xyz..*)

我没有测试过它,只是用我的 iPad 快速编写了它,但也许它有帮助。如果没有,请让我更新。

【讨论】:

  • 是的,它会的——除非你的 Spring 或 AspectJ 配置有问题,但你还没有发布。方面编织是否适用于任何类型的切入点/建议?你贴的切入点代码肯定是错的!
  • 为什么不行?它完美地适用于我的 android 项目。我可以看到它正在编织。但无论如何,问题是我如何使用基于注释的方面通过使用普通的 java 编译器编织到一个 android 项目中
  • 因为你的this 切入点似乎是一个包名。它应该是(或匹配)一个类名。
  • com.xyz.aspects.xyz 旨在用作类名占位符。知道如何通过普通的 java 编译器编译基于注释的方面。你能给我一个示例代码吗?
  • 因为你的类名以小写字母开头,我认为按照惯例你的意思是一个包。至于另一个问题:是的,我可以,几天后我回家。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-08-31
  • 1970-01-01
  • 2015-09-17
  • 1970-01-01
  • 2013-05-11
  • 2011-09-03
相关资源
最近更新 更多