基于 @AspectJ 的 Spring 3.1 AOP

2023-12-10

我正在尝试使用 Spring 3.1 运行基于 @AspectJ 的 AOP,但无法正确配置切入点 切入点和建议方法是:

切入点:

@Pointcut("execution(* point.*.*(..))")
public void selectAll() {}

建议后:

@After("selectAll()")
public void afterAdvice() {
    System.out.println("profile has been setup.");
}

之前的建议:

@Before("selectAll()")
public void beforeAdvice() {
    System.out.println("Going to setup profile.");
}

& 运行主程序我得到异常:

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'student' defined in class path resource [spring.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut selectAll
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:527)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)

尽管当我在 beforeAdvice() 和 afterAdvice() 方法中给出切入点表达式时,删除 PointCuts 方法一切正常

@Before("execution(* point.*.*(..))")
public void beforeAdvice() {
    System.out.println("Going to setup profile.");
}

 @After("execution(* point.*.*(..))")
public void afterAdvice() {
    System.out.println("profile has been setup.");
}

我正在尝试将切入点应用于 Student 类的方法:

package point;

 public class Student{
private Integer age;
private String name;

public void setAge(Integer age) {
    this.age = age;
}

public Integer getAge() {
    System.out.println("Age : " + age);
    return age;
}

public void setName(String name) {
    this.name = name;
}

public String getName() {
    System.out.println("Name : " + name);
    return name;
}

public void printThrowException() {
    System.out.println("Exception raised");
    throw new IllegalArgumentException();
}
 }

弹簧配置xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:aop="http://www.springframework.org/schema/aop"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-3.0.xsd ">

<aop:aspectj-autoproxy />
 <bean id="student" class="point.Student">
    <property name="name" value="Zara" />
    <property name="age" value="11" /> 
</bean>
<bean id="logging" class="point.Logging" />
</beans>

使用的 Jar 文件:

aopalliance-1.0.jar
asm-3.3.1.jar
aspectj-1.7.1.jar
aspectjrt-1.6.8.jar
aspectjtools-1.5.4.jar
aspectjweaver-1.6.2.jar
cglib-2.2.2.jar

带 spring 3.1 罐子


解决了问题:创建 bean 时出现的问题是因为旧罐子

更换的罐子:

 aopalliance-1.0.jar
 asm-3.3.1.jar
 aspectj-1.7.1.jar
 aspectjrt-1.6.8.jar
 aspectjtools-1.5.4.jar
 aspectjweaver-1.6.2.jar
 cglib-2.2.2.jar

with

aopalliance-1.0.jar
asm-3.3.1.jar
aspectj-1.7.1.jar
aspectjrt-1.7.0.jar
aspectjweaver-1.7.0.jar
cglib-2.2.2.jar
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于 @AspectJ 的 Spring 3.1 AOP 的相关文章

随机推荐

  • 为什么 StringTemplate 会很慢?

    我使用 StringTemplate 作为我的 Web 应用程序的视图层 最近我测量了渲染页面所花费的时间 简单页面约为 50 毫秒 复杂页面约为 500 毫秒 这对于我的需求来说太多了 所以我正在寻找一种方法来提高 ST 的性能 我怎样才
  • 使用 XPath 提取节点值

    我想从 amazon com 的一个部分中提取每个项目的数据 仅节点值 而不是链接 我正在寻找的价值是内在的 span class narrowValue ul li style margin left 0px a href s ref s
  • chdir() 可以接受相对路径吗?

    在Linux上的C中 chdir 函数可以接受相对路径吗 是的 当前工作目录是进程的一个属性 稍微扩展一下 这里有一些相关的POSIX定义 The 当前工作目录被定义为 与进程关联的目录 用于不以斜杠字符开头的路径名的路径名解析 有关更多详
  • 如何更改自定义轨道生成器的源? (雷神)

    我正在制作一个自定义生成器来生成新的 Rails 应用程序 我是这样做的 require thor require rails generators rails app app generator class AppBuilder lt R
  • ORACLE SQL 使用窗口函数运行 TOTAL 和 daytotal

    从 EMPLOYEE 表中 我想对记录数量 雇用的员工 进行分组 并且还有每天的运行总数 输入的格式是这样的 rownum Hired date time 1 1 10 2012 11 00 2 1 10 2012 13 00 3 20 1
  • 如何比较 if 语句中的多个字符串?

    我正在尝试检查 if 语句中的多种可能性 用户输入一个字符串 然后我检查该字符串是否有多种可能性 if theString Seven seven 7 theInt 7 cout lt lt You chose lt lt theInt l
  • Scala isInstanceOf 和类型擦除

    我很困惑如何isInstanceOf在 Scala 中工作 如果我做这样的事情 val x Int 5 x isInstanceOf Int 鉴于 Scala 确实进行了类型擦除 那么 JVM 不应该在运行时删除所有类型信息吗 它不是all
  • 如何获取Windows启动时间? [复制]

    这个问题在这里已经有答案了 如何使用某些 WinAPI 函数在 C 中获取 Windows 启动时间 我目前正在使用命令 systeminfo 但我正在寻找更合适的解决方案 我检查了任务管理器是如何做到这一点的 结果发现它使用ZwQuery
  • C++ 优化中的代码重新排序何时停止?

    我已经阅读了很多关于优化代码中的代码执行保证的问题 所以我试图编译一个关于允许 阻止编译器重新排序代码序列的原因列表 我已经从通常正确的内容开始回答 但我没有添加标准中的引号 这是根据我的经验得出的 如果有任何忘记的内容或对现有的要点进行扩
  • 使用Python多处理在worker之间共享变量[重复]

    这个问题在这里已经有答案了 如何读取和更新Python中多个worker之间共享的变量 例如 我正在使用 Python 中的多个进程扫描文件列表 并且想检查父目录是否已被扫描 def readFile filename Add the pa
  • R中Leaflet中聚集标记的聚合加权线串

    我正在尝试绘制位置和加权连接线串 当我放大或缩小时 标记的聚类会调整得很好 显示的集群标签是聚合的node val的标记 我想对线串做类似的事情 这样 该图不显示连接单个标记的蓝线 而是显示连接标记簇的线 并且 连接标记簇的新线串的宽度根据
  • 如何访问(转发)docker compose 网络内的公共 HTTP 请求 IP 地址?

    通过以下设置 只有 YARP 容器已发布端口 它正确设置了X Forward 供其他容器使用的标头 但不幸的是它是 docker compose 网关地址 当我想记录 公共 客户端的 IP 地址时 我得到 ffff 172 18 0 1这是
  • 如何创建具有依赖注入和接口的连接类?

    我正在读这个问题 PHP 多个不同的数据库依赖注入类 最佳答案 我理解这里使用接口背后的概念 但我不知道如何使用它 这是最重要的答案 抱歉 如果我不应该将其复制到这里 您应该首先为所有数据库操作创建一个接口 interface IDatab
  • d3 v4嵌套数据和堆积条形图

    I am trying to make a chart that looks like this 我有一个 D3 nest 数据结构 如下所示 key Area 1 values key 5 Validation Complete valu
  • Extjs 4通过ajax调用下载文件

    问题很简单 当我提交表单时 我必须下载一个文件 这是提交表单时的一个ajax调用 它允许我使用从表单 服务器端获取的数据构建一个文件 然后将其作为链接到警报 事实上 我的老板希望直接下载文件 而不是通过警报中的链接 所以我必须确保该文件可通
  • 如何在单元格更改上执行 JTable 选择所有文本

    我看过一些这样做的例子 但我仍然无法理解并且无法实现它 我想做的是单元格更改 焦点 下一个选定的单元格将选择所有文本 准备好让用户完全更改它 关于如何做有什么想法吗 更新 不知怎的 我设法完成了以下课程 但是 实施这个tblLayers s
  • 如何打印java txt文件中的列

    我正在尝试在一个 txt 文件上打印多个数组 其中有一个数组打印 然后有另一列装箱并有另一个数组打印 我如何格式化它才能工作 我不记得执行此操作的格式化命令 我需要所有列对齐 现在我有这个 private static void makeF
  • 包装python超类的所有方法

    如果我无法更改超类的代码 有没有办法包装超类的所有方法 作为一个最小的工作示例 请考虑这个基类Base 它有许多返回自身新实例的方法 以及派生类Child class Base def init self val self val val
  • Javascript appendChild onload 事件

    我将动态创建的图像元素附加到文档中 var img new Image img src test jpg img onload function var addedImg container appendChild img console
  • 基于 @AspectJ 的 Spring 3.1 AOP

    我正在尝试使用 Spring 3 1 运行基于 AspectJ 的 AOP 但无法正确配置切入点 切入点和建议方法是 切入点 Pointcut execution point public void selectAll 建议后 After