当前位置: 首页 > 知识库问答 >
问题:

未执行前的Spring aop-@

宗政财
2023-03-14

我试图实现一个简单的Spring AOP(v4)示例,使用@before建议和一个原位切入点表达式,但是没有调用方面方法。我有所有必需的依赖关系(spring-aop、aopalliance和aspectweaver)。我做错了什么?

package com.xyz;

public class TestClass {
    @PostConstruct
    public void init() {
        test();
    }
    public void test() {
       ...
    }
}

方面:

@Aspect
@Component
public class MyAspect{
    @Before("execution(* com.xyz.TestClass.test())")
    public void beforeTest() {
       ...      
    }
}

共有1个答案

金阳曜
2023-03-14

没有执行AOP的原因是testclass.test()不是在spring上下文中调用的,而是从testclass.init()进行简单/普通调用。

要测试您的安装程序,请将其修改为类似于下面的内容,以便由spring管理testclass.test()调用

package com.xyz;

public class TestClass {

   public void test() {
     ...
   }
}

TestClass注入另一个类,例如AnotherTestClass,并从那里调用Test方法

package com.xyz;

public class AnotherTestClass {

   @Autowired
   private TestClass testClass;

   public void anotherTest() {
     testClass.test();
   }
}
 类似资料:
  • 我正在我的ElasticSearch索引上写一系列负载测试。我需要在负载测试中设置并删除索引。为此我写了这段代码 我看到它打印“已完成执行清理”,但它并没有真正执行删除。我可以通过 当我运行我的模拟时。它运行成功。但是我可以看到测试索引仍然存在。

  • 很抱歉,我可能会重复这个问题(正如我在许多其他SO网站上看到的那样),但是,我不确定在这一点上还有什么可以尝试的。 我正在尝试设置一个简单的AspectJ Spring应用程序。一旦我有了一个工作示例,我想创建一个公共库,可以通过注释在我的团队中使用,所以我对使用AspectJ非常感兴趣,因为我认为它可以简化我尝试做的很多事情。 下面是我的代码: AspectDemoApplication。课堂—

  • 问题内容: 我已经尝试了这两个代码,但是却没有执行,有人可以告诉我为什么吗? 提前致谢 问题答案: 试试这个代码: 它会在源元素的位置单击并按住,移至目标元素的位置,然后释放鼠标。 要么 它将单击并按住源元素的位置,移动给定的偏移量,然后释放鼠标。 要么 它将执行以上两个代码的操作。 我在Java上编写此代码。您可以转换为指定的语言。 从动作引用。

  • 假设我有以下一组代码,可以在将来做一些事情: 假设我为这段代码提供了默认的ExecutionContext,我知道在后台会发生什么,但我想知道的是如何处理未来?我的意思是,应该有一些线程或一组线程可能会等待未来完成?这些线程被阻塞了吗?从某种意义上说,他们是在等待未来的结束? 现在在以下场景中: 假设x有一个超时,我可以这样调用: 我真的在阻挡吗?有没有更好的异步超时方法? 编辑:下面的超时比我上

  • 我试图理解java中完整期货的非阻塞回调性质 有了上面的代码,我总是看到下面看到的输出 线程名称ForkJoinPool.common池工人-1 thenApply Thread name main thenApply Thread name main thenAcceptThread name main Thread name main 这个顺序似乎建议主线程等待所有Futures线程的执行。

  • 我有@test Annotaion的测试市场。但是当我运行测试用例时,它显示测试运行:0,失败:0,跳过:0我正在从Eclipse中运行测试用例。我已经在Eclipse中安装了testng插件。 @test中的属性是自定义的。 TestNG版本:6.8.0