使用spring aop老报错:
Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in file [E:\workspace\shopping\WebRoot\WEB-INF\applicationContext.xml]: Initialization of bean failed; nested exception is org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: cn.hxex.springcore.aop.LoggerBean [Xlint:invalidAbsoluteTypeName]
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'org.springframework.aop.aspectj.AspectJPointcutAdvisor': Instantiation of bean failed; nested exception is org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: cn.hxex.springcore.aop.LoggerBean [Xlint:invalidAbsoluteTypeName]
Caused by: org.springframework.beans.BeanInstantiationException: Could not instantiate bean class [org.springframework.aop.aspectj.AspectJPointcutAdvisor]: Constructor threw exception; nested exception is java.lang.IllegalArgumentException: warning no match for this type name: cn.hxex.springcore.aop.LoggerBean [Xlint:invalidAbsoluteTypeName]
Caused by: java.lang.IllegalArgumentException: warning no match for this type name: cn.hxex.springcore.aop.LoggerBean [Xlint:invalidAbsoluteTypeName]
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:315)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:189)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:176)
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getMethodMatcher(AspectJExpressionPointcut.java:162)
at org.springframework.aop.aspectj.AbstractAspectJAdvice.buildSafePointcut(AbstractAspectJAdvice.java:192)
at org.springframework.aop.aspectj.AspectJPointcutAdvisor.<init>(AspectJPointcutAdvisor.java:51)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at org.springframework.beans.BeanUtils.instantiateClass(BeanUtils.java:85)
at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:87)
at org.springframework.beans.factory.support.ConstructorResolver.autowireConstructor(ConstructorResolver.java:187)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.autowireConstructor(AbstractAutowireCapableBeanFactory.java:800)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:718)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:386)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.aop.framework.autoproxy.BeanFactoryAdvisorRetrievalHelper.findAdvisorBeans(BeanFactoryAdvisorRetrievalHelper.java:87)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findCandidateAdvisors(AbstractAdvisorAutoProxyCreator.java:96)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:83)
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:66)
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:296)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:313)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1181)
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:427)
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:249)
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:155)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:246)
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:160)
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:291)
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:352)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:124)
at org.springframework.context.support.FileSystemXmlApplicationContext.<init>(FileSystemXmlApplicationContext.java:68)
at com.shop.spring.aop.AOPMain.main(AOPMain.java:10)
xml文件:
<aop:config>
<aop:pointcut id="loggerCalls" 
expression="execution(public * *(..)) and !execution(* cn.hxex.springcore.aop.LoggerBean.*(..))"/>

<aop:aspect id="logAspect" ref="loggerBean">
<aop:around pointcut-ref="loggerCalls" method="aroundLogCalls"/>
</aop:aspect>
</aop:config> <bean id="loggerBean" class="com.shop.spring.aop.LoggerBean"/>
<bean id="aopBean" class="com.shop.spring.aop.AOPBean"/>
其他代码很简单就不贴出来了,使用的是spring2.0.8,望高手指点一下.还有我使用的是java5却不能使用注解式的aop,一输入@Aspect就出现红线,郁闷

解决方案 »

  1.   

    applicationcontext.xml中的dataSource配置有误,使用第三方包的话确定导入正确的包
      

  2.   

     Error creating bean with name 'dataSource' defined in file [E:\workspace\shopping\WebRoot\WEB-INF\applicationContext.xml]
    你数据源有问题吧!
      

  3.   

    这是我开始做的,数据源什么的都没用问题,使用s2shh整合,之前没有实现spring AOP,后来想弄下,就加了上面的配置了,结果出错了,全部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/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd">

    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"></property>
    <property name="url" value="jdbc:mysql://localhost:3306/shop?useUnicode=true&amp;characterEncoding=utf-8"></property>
    <property name="username" value="root"></property>
    <property name="password" value="870227"></property>
    <property name="maxActive" value="100"></property>
    <property name="maxIdle" value="30"></property>
    <property name="maxWait" value="500"></property>
    <property name="defaultAutoCommit" value="true"></property>
    </bean>
    <bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">org.hibernate.dialect.MySQLDialect</prop>
    <prop key="hibernate.show_sql">true</prop>
    <prop key="hibernate.cache.use_query_cache">true</prop>
    <prop key="hibernate.cache.use_second_level_cache">true</prop>
    <prop key="hibernate.cache.provider_class">org.hibernate.cache.EhCacheProvider</prop>
    </props>
    </property>
    <property name="mappingResources">
    <list>
    <value>com/shop/bean/Comments.hbm.xml</value>
    <value>com/shop/bean/Orderitem.hbm.xml</value>
    <value>com/shop/bean/Product.hbm.xml</value>
    <value>com/shop/bean/User.hbm.xml</value>
    <value>com/shop/bean/Orders.hbm.xml</value>
    </list>
    </property>
    </bean>
    <bean id="txmanager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
    <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>
    <bean id="transactionInterceptor" class="org.springframework.transaction.interceptor.TransactionInterceptor">
        <!--  事务拦截器bean需要依赖注入一个事务管理器 -->
            <property name="transactionManager" ref="txmanager"/>
         <property name="transactionAttributes">
        <!--  下面定义事务传播属性-->
        <props>
        <prop key="find*,get*">PROPAGATION_REQUIRED,readOnly</prop>
         <prop key="save*,update*,delete*">PROPAGATION_REQUIRED</prop>
        </props>
        </property>
    </bean>    <!-- 定义BeanNameAutoProxyCreator-->
        <bean class="org.springframework.aop.framework.autoproxy.BeanNameAutoProxyCreator">
        <!--  指定对满足哪些bean name的bean自动生成业务代理 -->
        <property name="beanNames">
                <!--  下面是所有需要自动创建事务代理的bean-->
                <list>
                    <value>userservice</value>
                    <value>productserivce</value>
                     <value>orderitemserivce</value>
                      <value>orderserivce</value>
                      <value>salesrecordserivce</value>
                <!--  此处可增加其他需要自动创建事务代理的bean-->
                </list>
        </property>
            <!--  下面定义BeanNameAutoProxyCreator所需的事务拦截器-->
            <property name="interceptorNames">
                <list>
                    <!-- 此处可增加其他新的Interceptor -->
                    <value>transactionInterceptor</value> 
                </list>
            </property>
        </bean>
    <bean id="userdao" class="com.shop.dao.hibernate.UserDao">
    <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>
    <bean id="userserivce" class="com.shop.serivce.impl.UserSerivce">
    <property name="userdao">
    <ref local="userdao"/>
    </property>
    </bean>
    <bean id="productdao" class="com.shop.dao.hibernate.ProductDao">
    <property name="sessionFactory"><ref local="sessionFactory"/></property>
    </bean>
    <bean id="productserivce" class="com.shop.serivce.impl.ProductSerivce">
    <property name="productdao"><ref local="productdao"/></property>
    </bean>
    <bean id="orderdao" class="com.shop.dao.hibernate.OrderDao">
    <property name="sessionFactory">
    <ref local="sessionFactory"/>
    </property>
    </bean>
    <bean id="orderserivce" class="com.shop.serivce.impl.OrderSerivce">
    <property name="orderdao">
    <ref local="orderdao"/>
    </property>
    </bean>
    <bean id="orderitemdao" class="com.shop.dao.hibernate.OrderitemDao">
    <property name="sessionFactory">
    <ref local="sessionFactory"/>
    </property>
    </bean>
    <bean id="orderitemserivce" class="com.shop.serivce.impl.OrderitemSerivce">
    <property name="itemdao">
    <ref local="orderitemdao"/>
    </property>
    </bean>
    <bean id="salesrecorddao" class="com.shop.jdbc.SalesrecordDao">
    <property name="dataSource" ref="dataSource"/>
    </bean>
    <aop:config>
    <aop:pointcut id="loggerCalls" 
    expression="execution(public * *(..)) and !execution(* cn.hxex.springcore.aop.LoggerBean.*(..))"/>

    <aop:aspect id="logAspect" ref="loggerBean">
    <aop:around pointcut-ref="loggerCalls" method="aroundLogCalls"/>
    </aop:aspect>
    </aop:config> <bean id="loggerBean" class="com.shop.spring.aop.LoggerBean"/>
    <bean id="aopBean" class="com.shop.spring.aop.AOPBean"/>
    </beans>
      

  4.   

    给你一个正确的 你自己对对吧!        <!-- 配置事务管理器 -->
      <bean id="transactionManager" class="org.springframework.orm.hibernate3.HibernateTransactionManager">
      <property name="sessionFactory">
      <ref local="sessionFactory"/>
      </property>
      </bean>
     
      <!-- 配置事务的传播特性 -->
      <tx:advice id="txAdvice" transaction-manager="transactionManager" >
      <tx:attributes>
      <tx:method name="add*" propagation="REQUIRED"/>
      <tx:method name="del*" propagation="REQUIRED"/>
      <tx:method name="update*" propagation="REQUIRED"/>
      <tx:method name="deploy*" propagation="REQUIRED"/>
      <tx:method name="*" read-only="true"/>
      </tx:attributes>
      </tx:advice>
     
      <!-- 配置哪些类哪些方法使用事务 -->
      <aop:config>
      <aop:pointcut id="allManagerMethod" expression="execution(* com.zzq.erp.manager.*.*(..))"/>
      <aop:advisor advice-ref="txAdvice" pointcut-ref="allManagerMethod"/>
      </aop:config>
      

  5.   

    除了配置文件错误,还有其他原因,我记得我是换了一个tomcat解决的
      

  6.   

    你有没有引入相应的jdbc驱动包啊,我看了下你的代码也没有看出有什么问题来。我有正确的配置
    你看看吧<?xml version="1.0" encoding="UTF-8"?>
    <beans
    xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">
    <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.microsoft.sqlserver.jdbc.SQLServerDriver"></property>
    <property name="url" value="jdbc:sqlserver://localhost:1433;databaseName=ysuDate"></property>
    <property name="username" value="sa"></property>
    <property name="password" value="123"></property>
    <property name="maxActive" value="100"></property>
    <property name="maxIdle" value="30"></property>
    <property name="maxWait" value="500"></property>
    <property name="defaultAutoCommit" value="true"></property>
    </bean><bean id="sessionFactory" class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
    <property name="dataSource" ref="dataSource"></property>
    <property name="hibernateProperties">
    <props>
    <prop key="hibernate.dialect">
    org.hibernate.dialect.SQLServerDialect
    </prop>
    <prop key="hibernate.show_sql">true</prop>
    </props>
    </property>

    <property name="mappingResources">
    <list>
    <value>com/test/bean/User.hbm.xml</value>
    </list>
    </property>
    </bean></beans>
      

  7.   

    真是麻烦,不知道是不是版本的问题,如果使用tx:advice id="txAdvice" transaction-manager="transactionManager" > 
    <tx:attributes> 
    就会报错,我用另外的一种配置,文件如下:
    <bean id="bean" class="org.springframework.aop.framework.ProxyFactoryBean">
    <property name="proxyInterfaces">
    <value>com.shop.spring.aop.Bean</value>
    </property>
    <property name="target">
    <ref local="beanTarget"/>
    </property>
    <property name="interceptorNames">
    <list>
    <value>theAdvisor</value>
    </list>
    </property>
    </bean>
    <bean id="beanTarget" class="com.shop.spring.aop.BeanImpl"></bean>
    <bean id="theAdvisor" class="org.springframework.aop.support.RegexpMethodPointcutAdvisor">
    <property name="advice">
    <ref local="theBeforeAdvice"/>
    </property>
    <property name="pattern">
    <value>com\.shop.\spring.\aop.\Bean.\theMethod</value>
    </property>
    </bean>
    <bean id="theBeforeAdvice" class="com.shop.spring.aop.TestBeforeAdvice"/>
    这样就不会出错,哪位高手能解释一下这两种配置的区别吗?
      

  8.   

    应该是execution中命名错误,好好检查一下