程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 簡化spring(5)--減少不必要的基於接口編程

簡化spring(5)--減少不必要的基於接口編程

編輯:關於JAVA

眾所周知,Spring是提倡基於接口編程的。 但也有些Service類,比如SaleOrderManager 和SaleOrderManagerImpl,只有5%的機會再有另一個Impl實現。95%時間裡這兩兄弟站一起,就像C++裡的.h和.cpp,徒增維護的繁瑣,所以剛開始用Spring的時候就想去掉它,今天偶然在群裡聊起動態代理,算是搞明白了其中的道理,謝謝Sparkle :) IOC是不會強制基於接口的,是這些Service類一般要使用Spring的聲明式事務機制,而聲明式的事務機制是使用Spring AOP來實現的。 再看Spring AOP,混合使用了Java的動態代理和CGLib2,因為: Java的動態代理是AOP的理想方式,但只能用於接口。如果基於Class的時候,Spring AOP就會用CGLib生成目標類的子類來實現AOP,相當現實。 所以,我們只要指定使用聲明式事務bean使用CGLib來實現AOP,就可以不基於接口編程了。 指定的方式是設置proxyTargetClass為true。eg.

true ....

又討論了一下這樣的效率問題, 因為這些Service Bean都是單例,效率應該不受影響。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved