论坛首页 Java企业应用论坛

spring2.0集成aspectJ注解与JDK1.6冲突

浏览 3652 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2009-05-20   最后修改:2009-05-21

spring2.0集成aspectJ注解与JDK1.6冲突,如下:

切面类SecurityHandler .java

package com.bjsxt.spring;

import org.aspectj.lang.annotation.Aspect;
import org.aspectj.lang.annotation.Before;
import org.aspectj.lang.annotation.Pointcut;

/**
 * 定义Aspect
 * @author Administrator
 *
 */
@Aspect
public class SecurityHandler {
   
    /**
     * 定义Pointcut,Pointcut的名称就是allAddMethod,此方法不能有返回值和参数,该方法只是一个
     * 标识
     *
     * Pointcut的内容是一个表达式,描述那些对象的那些方法(订阅Joinpoint)
     */
    @Pointcut("execution(* com.bjsxt.spring.UserManagerImpl.add*(..))")
    private void pointCutMethod(){};
   
    /**
     * 定义Advice,标识在那个切入点何处织入此方法
     */
    @Before("pointCutMethod()")
    private void checkSecurity() {
        System.out.println("----------checkSecurity()---------------");
    }
   
}
目标对象类:UserManagerImpl.java

package com.bjsxt.spring;

public class UserManagerImpl implements UserManager {

    public void addUser(String username, String password) {
        System.out.println("-------UserManagerImpl.addUser()----------");
    }

    public void deleteUser(int id) {
        System.out.println("-------UserManagerImpl.deleteUser()----------");
    }

    public String findUserById(int id) {
        System.out.println("-------UserManagerImpl.findUserById()----------");
        return null;
    }

    public void modifyUser(int id, String username, String password) {
        System.out.println("-------UserManagerImpl.modifyUser()----------");
    }
   
}

applicationContext.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"
         xmlns:tx="http://www.springframework.org/schema/tx"
         xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd
           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd
           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd">
    <aop:aspectj-autoproxy/>
    <bean id="securityHandler" class="com.bjsxt.spring.SecurityHandler"/>          
    <bean id="userManager" class="com.bjsxt.spring.UserManagerImpl"/>
</beans>
测试客房端类:Client.java

package com.bjsxt.spring;

import org.springframework.beans.factory.BeanFactory;
import org.springframework.context.support.ClassPathXmlApplicationContext;

public class Client {

    public static void main(String[] args) {
        BeanFactory factory = new ClassPathXmlApplicationContext("applicationContext.xml");
       
        UserManager userManager = (UserManager)factory.getBean("userManager");
       
        userManager.addUser("张三", "123");
        userManager.deleteUser(1);
    }
}

 

    执行测试,抛出下列异常:

   Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'userManager' defined in class path resource [applicationContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut pointCutMethod
Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut pointCutMethod
    at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:315)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:172)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:162)
    at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:103)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:171)
    at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:231)
    at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:256)
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:68)
    at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:54)
    at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:247)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:311)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1038)
    at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:420)
    at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:245)
    at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:141)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:242)
    at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:156)
    at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:290)
    at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:348)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:92)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:77)
    at org.springframework.context.support.ClassPathXmlApplicationContext.<init>(ClassPathXmlApplicationContext.java:68)
    at com.bjsxt.spring.Client.main(Client.java:9)

 

      将JDK1.6切换到jdk1.5,就没问题了。那么在JDK1.6中,如何解决这个问题呢?哪位知道,不吝赐教,不胜感激。

 

论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics