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

AeyJ方面没有将Spring MVC方法与@Request estMap注释编织在一起

储承
2023-03-14

我有一个独立的aspectJ库(与Spring没有任何关系),我将其添加到应用服务器类路径中,以使用Load Time Weave监控正在运行的应用程序

方面可以与所有方法(域、服务、DAO…)完美结合但由于某些原因,即使切入点表达式与控制器类和方法名称匹配,它也无法识别带有@RequestMapping注释的Spring MVC方法

对于需要单独处理的Spring MVC控制器映射方法(或控制器通常也与其他框架不同)是否有不同的规则。

该方面编织到@Controller类中的其他公共和私有方法中,但没有具体到@Request estMap方法中。

注意:我不是在寻找特定于spring MVC的解决方案(除非它是唯一的选项),我希望能够编织成任何类型的类和方法,而不管框架如何,而不必修改正在运行的应用程序。

这是我的密码。

public aspect MethodExecutionTimeAspect {

private CollectedData collectedData;

public MethodExecutionTimeAspect() {
    // some initialiation logic.
}


pointcut publicOperation() : execution(public * com.mycompany.myproject..*());

Object around() : publicOperation() {
    // do something
    Object ret = proceed();
     // do something.
    return ret;
  }

}

package com.mycompany.myproject.webapp.springmvc;


@Controller
public class HomeController {

@Resource(name="productService")
private ProductService productService;

@RequestMapping(value = {"/home.do", "/"})
public String displayHomePage(ModelMap map) {
    List<Product> featuredProducts = productService.getFeaturedProducts();
    map.put("featuredProducts", featuredProducts);
    return "homePage";
}

}

共有1个答案

杜彦君
2023-03-14

切入点只匹配没有任何参数的方法。displayHomePage方法采用map参数。尝试

pointcut publicOperation() : execution(public * com.mycompany.myproject..*(..));

添加了<代码> 此切入点将匹配指定包中的任何公共方法,无论有多少参数(如果有的话)。

 类似资料:
  • 嗨,我想排除带注释的方法,这里是代码。 排除任何用NoTryCatch注释的方法 上面的代码确实排除了用NoTryCatch注释的方法,但是当这个方法被异常调用时,它会停止下一个方法的执行。例如 现在我按顺序调用方法 test1()不运行。 如果我删除test1()运行

  • 我对AOP相当陌生。我正在尝试使用AspectJ在没有Spring的maven项目中创建注释。然而,我试图使用@方面调用的方法没有被调用。 这就是我的pom看起来的样子: 注释如下所示: 我为我的注释创建了一个注释处理器: } 我在这次通话中称之为: 我创建了一个aop。xml文件,并将其放置在与pom相同的文件夹中。xml。 当我调用createPurchase方法时,它在没有首先调用@Befo

  • 问题内容: 我在Service类中看到了一种被标记为的方法,但是它也在同一类中调用了其他未标为的方法。 这是否意味着对单独方法的调用导致应用程序打开与DB的单独连接或暂停父事务等? 不带任何注释的方法的默认行为是什么,而另一个带有注释的方法调用该方法的默认行为是什么? 问题答案: 当你调用没有事务块之内的方法时,父事务将继续使用新方法。它将使用与父方法(with )相同的连接,以及在调用的方法中导

  • 是否允许在一个方法中使用多个@scheduled注释?