20190101spring aop 导错包引起的问题

1、引入jar包

org.springframework
spring-aop
4.3.13.RELEASE

org.springframework spring-aspects 4.3.13.RELEASE aopalliance aopalliance 1.0 org.aspectj aspectjrt 1.8.10 org.aspectj aspectjweaver 1.8.10 junit junit 4.12 test org.springframework spring-test 4.3.13.RELEASE test

2、编写业务类
@Service
public class MemberManagerService {

public void addMember(Member member){
	System.out.println("增加一个用户");
}

public void updateMember(Member member){
	System.out.println("修改用户");
}

public void deleteMember(String name){
	System.out.println("删除用户");
}

public Member queryMember(String name){
	System.out.println("查询用户");
	return null;
}

}
3、编写切面类
public class LogAspect {

public void before(JoinPoint joinPoint){
	
	System.out.println("调用方法之前执行:" );
	
}

public void after(JoinPoint joinPoint){

	System.out.println("调用方法之后执行:" + joinPoint);
	
}

public Member afterReturn(JoinPoint joinPoint){

System.out.println("调用获得返回值之后执行:" + joinPoint);
return null;

}

public void afterThrow(JoinPoint joinPoint){

System.out.println("调用抛出异常之后执行:" + joinPoint);

}

}
4、编写配置
<aop:aspectj-autoproxy proxy-target-class=“true” />
aop:config
<aop:aspect ref=“logAspect”>
<aop:pointcut expression=“execution(* com.zyren.service…*(…))” id=“pointcut”/>
<aop:before method=“before” pointcut-ref=“pointcut”/>
<aop:after method=“after” pointcut-ref = “pointcut”/>
<aop:after-returning method=“afterReturn” returning=“com.zyren.model.Member” pointcut-ref = “pointcut”/>
<aop:after-throwing method=“afterThrow” pointcut-ref = “pointcut”/>
</aop:aspect>

</aop:config>

5、编写junit 测试代码
@ContextConfiguration(locations=“classpath:application.xml”)
@RunWith(SpringJUnit4ClassRunner.class)
public class MemberManagerServiceTest {
@Autowired
private MemberManagerService memberManagerService;

@Test
public void testAddMember(){
	memberManagerService.addMember(null);		
}
/*public void testUpdateMember(){
	memberManagerService.updateMember(null);		
}

public void testDeleteMember(){
	memberManagerService.deleteMember(null);		
}*/
@Test
public void testqueryMember(){
	memberManagerService.queryMember(null);
}

}
6、遇到的问题
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:154)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:122)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:271)
… 76 more
Caused by: java.lang.IllegalArgumentException: error at ::0 formal unbound in pointcut
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:301)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:217)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:190)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getMethodMatcher(AspectJExpressionPointcut.java:175)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.buildSafePointcut(AbstractAspectJAdvice.java:196)
at org.springframework.aop.aspectj.AspectJPointcutAdvisor.(AspectJPointcutAdvisor.java:50)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:142)
… 78 more

 原因:切面类中的JoinPoint 引错了包(import org.aopalliance.intercept.Joinpoint;)
 应该引入的包是org.aspectj.lang.JoinPoint;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值