2015-09-19 40 views
0

我想使用datasaourceTransactionManager实现spring的事务管理。这是我的应用程序context.xml春季声明式交易建议切入点错误

<beans xmlns="http://www.springframework.org/schema/beans" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xmlns:p="http://www.springframework.org/schema/p" 
    xmlns:aop="http://www.springframework.org/schema/aop" 
    xmlns:tx="http://www.springframework.org/schema/tx" 
    xmlns:util="http://www.springframework.org/schema/util" 
    xmlns:jdbc="http://www.springframework.org/schema/jdbc" 
    xmlns:jee="http://www.springframework.org/schema/jee" 
    xmlns:c="http://www.springframework.org/schema/c" 
    xmlns:context="http://www.springframework.org/schema/context" 
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.0.xsd 
    http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-4.0.xsd 
    http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-4.0.xsd 
    http://www.springframework.org/schema/util http://www.springframework.org/schema/util/spring-util-3.0.xsd 
    http://www.springframework.org/schema/jdbc http://www.springframework.org/schema/jdbc/spring-jdbc-3.1.xsd 
    http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd 
    http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd" > 

    <context:component-scan base-package="com"/> 
    <aop:aspectj-autoproxy />  

    <bean id="dataSource" 
    class="org.apache.commons.dbcp.BasicDataSource" 
    p:driverClassName="oracle.jdbc.driver.OracleDriver" 
    p:url="jdbc:oracle:thin:@//localhost:1521/XE" 
    p:username="hr" 
    p:password="********" /> 


    <bean id="datasourceTransactionManager" 
     class="org.springframework.jdbc.datasource.DataSourceTransactionManager" 
     p:dataSource-ref="dataSource" /> 

    <bean id="daoClass" 
     class="com.dao.DaoClass" 
     p:sessionFactory-ref="sessionFactory" 
     p:dataSource-ref="dataSource" 
     /> 

      <tx:advice id="transactionAdvice" transaction-manager="datasourceTransactionManager"> 
     <tx:attributes> 
      <tx:method name="enterPublisher"/> 
     </tx:attributes> 
    </tx:advice> 

    <aop:config> 

     <aop:pointcut id="transactionPointcut" expression="execution(* com.dao.DaoClass.*(..))"/> 
     <aop:advisor advice-ref="transactionAdvice" pointcut="transactionPointcut"/> 

    </aop:config> 

    <bean id="sessionFactory" 
     class="org.springframework.orm.hibernate4.LocalSessionFactoryBean" 
     p:dataSource-ref="dataSource" 
     p:configLocation="/configs/hibernate.cfg.xml"> 
     <property name="hibernateProperties"> 
      <map> 
       <entry key="hibernate.dialect" value="org.hibernate.dialect.OracleDialect"/> 
       <entry key="hibernate.show_sql" value="true"/> 
      </map> 
     </property> 
    </bean> 

但是,在启动应用程序时,我收到以下异常。

Exception in thread "main" org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [configs/appContext.xml]: Initialization of bean failed; nested exception is java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 0 
transactionPointcut 
^ 

at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:547) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:475) 
at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:304) 
at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:228) 
at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:300) 
at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:195) 
at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:700) 
at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:760) 
at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482) 
at springhibernate.SpringHibernate.main(SpringHibernate.java:39) 
Caused by: java.lang.IllegalArgumentException: Pointcut is not well-formed: expecting '(' at character position 0 
transactionPointcut 
^ 

at org.aspectj.weaver.tools.PointcutParser.resolvePointcutExpression(PointcutParser.java:316) 
at org.aspectj.weaver.tools.PointcutParser.parsePointcutExpression(PointcutParser.java:294) 
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:212) 
at org.springframework.aop.aspectj.AspectJExpressionPointcut.buildPointcutExpression(AspectJExpressionPointcut.java:199) 
at org.springframework.aop.aspectj.AspectJExpressionPointcut.checkReadyToMatch(AspectJExpressionPointcut.java:188) 
at org.springframework.aop.aspectj.AspectJExpressionPointcut.getClassFilter(AspectJExpressionPointcut.java:168) 
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:208) 
at org.springframework.aop.support.AopUtils.canApply(AopUtils.java:262) 
at org.springframework.aop.support.AopUtils.findAdvisorsThatCanApply(AopUtils.java:294) 
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findAdvisorsThatCanApply(AbstractAdvisorAutoProxyCreator.java:118) 
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.findEligibleAdvisors(AbstractAdvisorAutoProxyCreator.java:88) 
at org.springframework.aop.framework.autoproxy.AbstractAdvisorAutoProxyCreator.getAdvicesAndAdvisorsForBean(AbstractAdvisorAutoProxyCreator.java:69) 
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.wrapIfNecessary(AbstractAutoProxyCreator.java:372) 
at org.springframework.aop.framework.autoproxy.AbstractAutoProxyCreator.postProcessAfterInitialization(AbstractAutoProxyCreator.java:335) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.applyBeanPostProcessorsAfterInitialization(AbstractAutowireCapableBeanFactory.java:421) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1558) 
at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:539) 
... 9 more 
Java Result: 1 

我似乎无法找到切入点表达式的问题。我哪里错了?

回答

0

使用pointcut-ref而不是aop:advisor中的pointcut属性。