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

基于Spring 3.1的@AspectJ AOP

陈俊誉
2023-03-14
@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.");
}

运行主程序时出现异常(&R):

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()方法中给出切入点表达式时,删除切入点方法的所有操作都很好

@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.");
}
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 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 Jar

共有1个答案

荆城
2023-03-14

解决了这个问题:创建bean时的问题是因为旧的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

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
 类似资料:
  • 我在Spring3.1中使用@Cacheable。我对Cacheable中的值和键映射参数有点混淆。以下是我正在做的: 这里发生的情况是,第二个方法依赖于第一个方法的选定值,但问题是假设当我传递zoneMastNo=1和areaMastNo=1时,第二个方法返回第一个方法结果。事实上,我有很多服务,因此,我希望使用公共值来缓存特定的用例。现在我的问题是: 我如何解决这个问题 对每个服务都使用cac

  • 我的web应用程序使用的是Spring3.1和hibernate4。在这里,我试图为eh缓存,但得到一些错误,这是我的配置,我已经使用:- dispatcher-servlet.xml ehcache.xml 这是依赖性:— 我得到以下错误:-- 严重:在org.springframework.beans.factory中上下文初始化失败。BeanCreationException:创建名为“or

  • 我正在尝试实现Spring3.1缓存,正如这里和这里所解释的,但它似乎不起作用:我的方法每次都会运行,即使它被标记为@cacheable。我做错了什么? 我已经将它移动到一个带有自己配置文件的junit测试用例中,以将它与应用程序的其余部分隔离开来,但问题仍然存在。以下是相关文件: Spring-test-servlet.xml ehcache.xml 我的测试。JAVA 相关Pom条目:(spr

  • 问题内容: 在JavaScript中,每个对象同时是一个实例和一个类。要进行继承,可以将任何对象实例用作原型。 在Python,C ++等中,有类和实例作为单独的概念。为了进行继承,您必须使用基类创建一个新类,然后可以使用该新类来生成派生实例。 为什么JavaScript朝这个方向发展(基于原型的面向对象)?与传统的基于类的OO相比,基于原型的OO有哪些优点和缺点? 问题答案: 这里大约有一百个术

  • 我们的项目由几个子应用程序组成,我们正在寻找实现SSO的解决方案,以避免每个子应用程序的身份验证。 假设这是我们项目的结构: 我们发现有很多关于“基于OAuth2实现SSO”的文章都是这样的。 在那篇文章中,我们更喜欢策略,因为它简单明了,但是本机应用程序有一些限制,然后我们专注于OAuth2。 这是工作流程: 1 OAuth2中的规则 资源服务器(SP)-这是您尝试访问信息的Web服务器。 客户

  • 我在Tensorflow中的LSTM-RNN上训练一些音乐数据,遇到了GPU内存分配的一些问题,我不明白:我遇到了OOM,而实际上似乎还有足够的VRAM可用。一些背景:我正在使用GTX1060 6GB、英特尔至强E3-1231V3和8GB内存开发Ubuntu Gnome 16.04。现在,首先是我能理解的错误消息的一部分,在中,我将在最后再次添加整个错误消息,以供任何可能要求帮助的人使用: I t

  • 我使用Spring Boot开发了这个websocket服务器。服务器与基于js的客户机配合得很好。 控制器: 这是服务器端。现在,对于客户机,我已经创建了一个@ClientEndpoint,当我连接到URI“ws://localhost:8080/spring-mvc-java/chat”时,我能够建立一个连接,并且可以看到@ClientEndpoint的@OnOpen回调被触发。 但是,use

  • 问题内容: 我尝试不使用任何xml。 像这样一个:转换为@Bean 问题在这里。 尝试将“ com.cloudlb.domain.User”转换为Class []无效。 错误:投放问题。 先感谢您。 问题答案: