- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在寻找一种 Java 解决方案,它允许我使用 AOP 在运行时在已经运行的代码之上编写新代码。关键是不需要重启 JVM。另外,我想在运行时删除编织,让旧代码按照编织前的方式运行。
我认为 AspectJ 加载时间编织 + 运行时类加载/卸载可以做到这一点。有人试过吗?有什么建议吗?谢谢。
最佳答案
需要考虑的几件事:
话虽如此,您可以尝试 OSGi 等概念,也可以编写自己的类加载器(或在 Internet 上找到许多现有类加载器之一),在单独的类加载器实例中加载每个类或每个 JAR。这可能会变得任意复杂,所以只要它在您的情况的技术范围内,您可能会想考虑这种简单的方法:
if()
pointcuts对于所有相关的建议,并提供一种方法来动态更改切入点使用的变量的值,以便能够动态地打开和关闭建议。性能开销通常很小,不用担心。在您说它太贵之前先试一试。此解决方案满足您的条件,即它可以动态激活(停用)并且在编织方面代码后无需重新启动 JVM。
关于java - 运行时的切面编织,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17323500/
我的 AspectJ 方面看起来像这样: @Aspect public class MyAspect { private Child child; public MyAspect() {
@Around注解可以用来在调用一个具体方法前和调用后来完成一些具体的任务。 比如我们想在执行controller中方法前打印出请求参数,并在方法执行结束后来打印出响应值,这个时候,我们就可以借助
我需要避免在对类进行单元测试时调用某个方面。 我正在使用 Java 8、spring 4.3.22.RELEASE 和 mockito。我有一个@Service 和一个单元测试。我还有一个 @Aspe
我在一个 Maven 项目模块中有一个方面 com.x.NiceAspect,在一个单独的 Maven 模块中有一个类 com.x.NiceClass。这些模块具有相同的 POM 父级,一起创建一个项
我是一名优秀的程序员,十分优秀!