我使用Spring JdbcTemplate进行连接。我正在尝试记录"执行的查询"直接从JDBC模板使用aspectJ。
是否可以通过以下方式直接对第三方软件包(JDBC模板)使用aspectj切入点:@pointcut("execution(* org.springframework.jdbc.core.JdbcOperations.*(..))")
?当我尝试这个时,没有调用JDBC操作中的这个切入点。
我还尝试了以下内容:@Pointcut("execution(* org.springframework.jdbc.core.JdbcTemplate.*(..))")
。但仍然没有发生任何事情。
任何建议都将不胜感激。
答案 0 :(得分:0)
您无法使用Spring AOP
实现此目的,因为它不在您的应用程序的上下文中,而是由Spring容器管理。 Spring AOP仅限于它自己的应用程序上下文,但AspectJ
可以使用它。
首先,您需要将AspectJ runtime library
添加到项目中。
必需的依赖项:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aop</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjrt</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>org.aspectj</groupId>
<artifactId>aspectjweaver</artifactId>
<version>1.8.10</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-aspects</artifactId>
<version>4.3.5.RELEASE</version>
</dependency>
接下来,启用项目的AspectJ特性。我正在使用STS,所以在我的情况下我只是Enable AspectJ tooling
,它会自动将AspectJ
运行时添加到我的项目中。右键单击您的项目 - &gt;弹簧工具 - &gt;启用Spring Aspects Tooling
确保AspectJ运行时库位于类路径
接下来将AspectJ
方面添加到您的项目中。
public aspect JdbcAspect {
before(): execution(* org.springframework.jdbc.*.*.*(..)) {
System.out.println(" ### Intercepted");
}
}