今天在老項目上測試新的功能,不能在原有的業務層上繼續添加業務代碼,因此,新建了一層業務層,如下圖:
之後的代碼基本上都是按照標準的copy過來,項目啓動正常,不過在調用其他功能後,在這一段代碼中報了異常:
Session session = getSession();
異常信息如下:
查了下資料,應該是獲取session的方法不在事務管理器內,查看一下配置文件如下:
<aop:config expose-proxy="true">
<!-- 只對業務邏輯層實施事務 -->
<aop:pointcut id="txAuthPointcut"
expression="execution(* com.*.services.*.*(..))" />
<!-- Advisor定義,切入點和通知分別爲txPointcut、txAdvice -->
<aop:advisor pointcut-ref="txAuthPointcut" advice-ref="txAdvice" />
</aop:config>
把新建的業務層貼上去就可以了,如下:
<aop:config expose-proxy="true">
<!-- 只對業務邏輯層實施事務 -->
<aop:pointcut id="txAuthPointcut"
expression="execution(* com.*.services.*.*(..))" />
<aop:pointcut id="txTest"
expression="execution(* com.*.service.*.*(..))" /><!-- 新方法測試-->
<!-- Advisor定義,切入點和通知分別爲txPointcut、txAdvice -->
<aop:advisor pointcut-ref="txAuthPointcut" advice-ref="txAdvice" />
<aop:advisor pointcut-ref="txTest" advice-ref="txAdvice" /> <!-- 新方法測試 -->
</aop:config>
之後再調用後就沒問題了。
以前好像遇到過這個問題,這次就做個記錄方便以後查看。