Java架構的思考

來源:互聯網
上載者:User

標籤:

目前的JAVA 企業級開發架構,我們常用的大致包括IOC AOP MVC ORM架構 


1、 IOC spring是一個非常棒的ico容器,其思想非常簡單,用一個集合對象如MAP 來緩衝對象(對象都是單例的),這也就是spring 所說容器內單例,它和java中的單例模式的區別在於單例模式是在當前java進程中保持單例,因為它有三個必要條件:private static 自身對象、private 構造方法、public static getInstance()方法,以保持在進程中單例,而spring只能保證在容器中單例,使用者是可以手動再new出其他對象的。所以這部分如果為了簡 單可以不使用spring的ioc架構以單例模式替代,減少spring的jar包,缺點是可維護性和擴充性較差。或自己寫一個ico容器以實現 spring的ico功能。


2、aop aop的實質是動態代理模型,架構套件括spring、AspectJ等,當然最行的是spring, spring有兩種實現形式,一種是jdk的動態代理,一種是cglib位元組碼架構(比jdk的反射要快,其asm架構實現),典型的情境是資料庫事務, 個人感覺aop的應用其實可以去掉。可維護性並沒有提高,反而變更複雜。aop事務是在threadlocal是以threadlocal為基礎的。關於 aop去或留希望各位討論。


3、mvc架構 spring mvc struts2 這兩個架構相比:spring mvc的思想還是比較先進的,因為struts2的action bean不是單例的,每次通過反射new出一個對象,效能會相對較低。而spring mvc controller是單例的,繼承至servlet類(單例多純種)。它的實現思想的是方法參數的注入。兩個都支援模型驅動。spring mvc有一個缺點,註解的配置模型全部用的java反射。效能也會有影響。兩者都支援註解,個人認為xml要好於註解,開發階段註解要優於xml,因為方 便,而維護起來可能會比較麻煩,尤其是對剛接手項目的新人。最好的方案是取兩者之長,去其缺點,保留spring的單例通過方法注入,注入時將jdk反射 去掉,換成asm的注入思想,以提高效能。


4、ORM架構 hibernate mybatis。hiberate是全自動的orm架構,優點是簡單使用方便,但jar包很多,大資料SQL調優問題比較大。mybatis 由ibatis升級,半自動orm架構,需要手動寫sql,優點是方便sql調試,缺點是對於簡單的單表增刪改也需要手動寫SQL,比較麻煩。所以最好是 結合兩個架構的優點開發一個單表的增刪改orm(不依賴SQL),複雜SQL可以直接通過JDBC這樣可以提高效能。

 

本帖源自其他作者,著作權原作者所有。

 原帖地址:http://www.cnblogs.com/zhishan/p/3199875.html

Java架構的思考

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.