Configuration problem: Cannot locate BeanDefinitionDecorator for element [config] 或 [advice]

我今天在網上學搭框架,我在spring.xml配置的時候,我不是直接複製的,我是手把手敲了一遍,固然會有小錯誤。我把這個錯誤也記錄一下。spring

其實很簡單,你仔細對比你本身親手敲得和別人測試經過的。你會發現不少地方不是位置放錯了,就是字符錯了。express

不說多了,標題的錯誤已經告訴咱們答案了。我先把錯誤配置代碼貼出來:app

 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>加上,而後等我把接下來的spa

<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>code

這些代碼寫完才加上這個</bean>,固然這樣也沒有報錯,因此我沒注意,等啓動時候報錯了,我當時網上瘋查,沒找到我想要的。後來我就把原版的複製過來,啓動就沒報錯了,我因而不服,我就是要弄個明白,後來這樣仔細一對比,才發現個人位置放得不對。要把中間那些代碼從<aop:config>開始放到<bean>外面,不要包在裏面。但願我這個低級錯誤能幫到大家。xml

 

正確配置代碼:blog

 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>
相關文章
相關標籤/搜索