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

Spring boot 1.5.12方面未调用

芮宇航
2023-03-14

我知道Stackoverflow中有很多类似的问题,但没有一个对我有帮助。

com.mypkg.controller;

@RestController
public class MyController {

  @RequestMapping(method = RequestMethod.POST,
   ......
  public ResponseEntity<?> MyEndpoint(myParams) {
      return this.myMethod(myParams, "myString");
  }

  public ResponseEntity<?> myMethod(myParams, String myString){
     //do something
     return myReponseEntity
  }
}
com.mypkg.controller;

@Aspect
@Component
@Slf4j
public class MyAspect {
    @Around("execution(* com.mypkg.controller.MyController.MyEndpoint(..))  && args(..,aParam)")
    public ResponseEntity<?> endpointAround(ProceedingJoinPoint joinPoint, String aParam) throws Throwable {
        // I am working fine
        // do something
        return 
   }

    @Around("execution(* com.mypkg.controller.MyController.myMethod(..))  && args(..,myString)")
    public ResponseEntity<?> myMethodAround(ProceedingJoinPoint joinPoint, String myString) throws Throwable {
        // **** I AM NOT CALLED****
        // do something
        // return ...
   }
}
@Configuration
@EnableAspectJAutoProxy(proxyTargetClass=true)
public class AopConfig {}

问题是第二个@around。它不叫。每次执行MyEndpoint时我都需要调用一个方法,每次执行MyEndpoint调用MyMethod时我都需要调用另一个方法。

共有1个答案

况明贤
2023-03-14

问题是您的方法MyMethod是直接从其他方法内部调用的,而不是作为SomeSpringBean.MyMethod调用。

spring的工作方式是包装您的任何bean,然后在“包装”上它可以执行所有方面或其他与spring相关的东西。当您从同一个类中的另一个方法调用一个方法时,您不会经过包装,因此不会发生与方面相关的事情

 类似资料:
  • 问题内容: 我只是实现了继承JPanel的类,如下所示 Orpanel类正在加载图像并调整其自身大小。 这是问题。 调用JFrame的setContentpane(Orpanel的实例)使其工作正常,但是当我将Orpanel附加到JFrame时,调用add()方法而不是setContentpane(我知道setcontentpane并不意味着attach ..反正),它就行不通了。 终于弄清楚了当

  • 我已经尝试了这个平台上提供的所有答案,但没有成功。我正在执行这个命令行运行程序,但是run方法没有调用。 我感谢你的帮助。 谢谢 我尝试了以下解决方案,但得到了这个例外。 第一:在您的引导类(具有SpringApplication.run(…,args)的主方法的类)中,您可以在@SpringBootApplication注释处添加属性scanBasePackages: @SpringBootAp

  • 我想在地图活动中添加标记,它的位置是从Firebase实时数据库中检索到的。 我尝试在和方法中实现,并且当用户登录时(尽管没有错误,但它们都不起作用),我还使用logcat显示位置坐标,但它的值不显示。 这是我的数据库

  • 我有一个里面有片段和IntentService的活动。当我单击按钮对话框片段打开,我输入我的数据。之后,我单击确定,它调用getActive()。启动服务(意图)。服务通过本地广播管理器调用sendBroadcast(意图),但没有调用onAccess()方法。怎么了?这是我的广播接收器 我在这里登记 我的记忆法 还有我在服务中发送广播的方法

  • 我有Android的代码 其中“timeUntilStageTwo”是直到第二天的某个小时的时间,所以我想在每秒钟(在onTick方法中)刷新文本视图并更改其文本。问题是这个onTick方法只被调用几次,然后就完全停止被调用了,这是为什么呢?关键是我想在活动中做一个计时器,直到给定的小时

  • 我在一个名为seedrecord的对象和一个名为FielliateLink的对象之间有一个manytomany关系。为了删除FielliateLink,我需要首先从每个SeedRecord的FielliateList中删除对它的引用。之后,我使用spring JParepository的delete方法删除对象。因为我的服务(FiniliateLinkService)中有不同的删除方法,所以我决定