我今天在網上學搭框架,我在spring.xml配置的時候,我不是直接復制的,我是手把手敲了一遍,當然會有小錯誤。我把這個錯誤也記錄一下。
其實很簡單,你仔細對比你自己親手敲得和別人測試通過的。你會發現很多地方不是位置放錯了,就是字符錯了。
不說多了,標題的錯誤已經告訴我們答案了。我先把錯誤配置代碼貼出來:
1 <bean id="transactionManager" 2 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 3 <property name="dataSource" ref="dataSource" /> 4 這里的</bean>去哪里了? 5 <aop:config> 6 <aop:pointcut id="transactionPointcut" 7 expression="execution(* com.zou.test.service..*Impl.*(..))" /> 8 <aop:advisor pointcut-ref="transactionPointcut" 9 advice-ref="transactionAdvice" /> 10 </aop:config> 11 12 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> 13 <tx:attributes> 14 <tx:method name="add*" propagation="REQUIRED" /> 15 <tx:method name="append*" propagation="REQUIRED" /> 16 <tx:method name="insert*" propagation="REQUIRED" /> 17 <tx:method name="save*" propagation="REQUIRED" /> 18 <tx:method name="update*" propagation="REQUIRED" /> 19 <tx:method name="modify*" propagation="REQUIRED" /> 20 <tx:method name="edit*" propagation="REQUIRED" /> 21 <tx:method name="delete*" propagation="REQUIRED" /> 22 <tx:method name="remove*" propagation="REQUIRED" /> 23 <tx:method name="repair" propagation="REQUIRED" /> 24 <tx:method name="delAndRepair" propagation="REQUIRED" /> 25 26 27 <tx:method name="get*" propagation="SUPPORTS" /> 28 <tx:method name="find*" propagation="SUPPORTS" /> 29 <tx:method name="load*" propagation="SUPPORTS" /> 30 <tx:method name="search*" propagation="SUPPORTS" /> 31 <tx:method name="datagrid*" propagation="SUPPORTS" /> 32 33 34 <tx:method name="*" propagation="SUPPORTS" /> 35 </tx:attributes> 36 </tx:advice> 37 38 </bean> 原來跑這里來了
不知道大家看出什么原因沒有,似乎都很正確,沒毛病。
說重點,我說過不是位置錯了就是字符錯了。
其實就是我方的位置錯誤了,我不小心寫<bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">這個的時候忘記及時把結束</bean>加上,然后等我把接下來的
<aop:config>
<aop:pointcut id="transactionPointcut"
expression="execution(* com.zou.test.service..*Impl.*(..))" />
<aop:advisor pointcut-ref="transactionPointcut"
advice-ref="transactionAdvice" />
</aop:config>
<tx:advice id="transactionAdvice" transaction-manager="transactionManager">
<tx:attributes>
<tx:method name="add*" propagation="REQUIRED" />
<tx:method name="append*" propagation="REQUIRED" />
<tx:method name="insert*" propagation="REQUIRED" />
<tx:method name="save*" propagation="REQUIRED" />
<tx:method name="update*" propagation="REQUIRED" />
<tx:method name="modify*" propagation="REQUIRED" />
<tx:method name="edit*" propagation="REQUIRED" />
<tx:method name="delete*" propagation="REQUIRED" />
<tx:method name="remove*" propagation="REQUIRED" />
<tx:method name="repair" propagation="REQUIRED" />
<tx:method name="delAndRepair" propagation="REQUIRED" />
<tx:method name="get*" propagation="SUPPORTS" />
<tx:method name="find*" propagation="SUPPORTS" />
<tx:method name="load*" propagation="SUPPORTS" />
<tx:method name="search*" propagation="SUPPORTS" />
<tx:method name="datagrid*" propagation="SUPPORTS" />
<tx:method name="*" propagation="SUPPORTS" />
</tx:attributes>
</tx:advice>
這些代碼寫完才加上這個</bean>,當然這樣也沒有報錯,所以我沒注意,等啟動時候報錯了,我當時網上瘋查,沒找到我想要的。后來我就把原版的復制過來,啟動就沒報錯了,我於是不服,我就是要弄個明白,后來這樣仔細一對比,才發現我的位置放得不對。要把中間那些代碼從<aop:config>開始放到<bean>外面,不要包在里面。希望我這個低級錯誤能幫到你們。
正確配置代碼:
1 <bean id="transactionManager" 2 class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> 3 <property name="dataSource" ref="dataSource" /> 4 </bean>---結束的</bean> 之前錯誤的原因</bean>在最下面。 5 <aop:config> 6 <aop:pointcut id="transactionPointcut" 7 expression="execution(* com.zou.test.service..*Impl.*(..))" /> 8 <aop:advisor pointcut-ref="transactionPointcut" 9 advice-ref="transactionAdvice" /> 10 </aop:config> 11 12 <tx:advice id="transactionAdvice" transaction-manager="transactionManager"> 13 <tx:attributes> 14 <tx:method name="add*" propagation="REQUIRED" /> 15 <tx:method name="append*" propagation="REQUIRED" /> 16 <tx:method name="insert*" propagation="REQUIRED" /> 17 <tx:method name="save*" propagation="REQUIRED" /> 18 <tx:method name="update*" propagation="REQUIRED" /> 19 <tx:method name="modify*" propagation="REQUIRED" /> 20 <tx:method name="edit*" propagation="REQUIRED" /> 21 <tx:method name="delete*" propagation="REQUIRED" /> 22 <tx:method name="remove*" propagation="REQUIRED" /> 23 <tx:method name="repair" propagation="REQUIRED" /> 24 <tx:method name="delAndRepair" propagation="REQUIRED" /> 25 26 <tx:method name="get*" propagation="SUPPORTS" /> 27 <tx:method name="find*" propagation="SUPPORTS" /> 28 <tx:method name="load*" propagation="SUPPORTS" /> 29 <tx:method name="search*" propagation="SUPPORTS" /> 30 <tx:method name="datagrid*" propagation="SUPPORTS" /> 31 32 <tx:method name="*" propagation="SUPPORTS" /> 33 </tx:attributes> 34 </tx:advice>
