<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    隨筆 - 4  文章 - 10  trackbacks - 0
    <2008年5月>
    27282930123
    45678910
    11121314151617
    18192021222324
    25262728293031
    1234567

    常用鏈接

    留言簿(1)

    隨筆檔案

    文章分類

    文章檔案

    搜索

    •  

    最新評論

    閱讀排行榜

    評論排行榜

    Spring 這么多內容該看哪些? 我就根據我的理解談一些個人的觀點, 僅供參考. 歡迎討論.

    首先學習 Spring 等框架應該本著簡化程序員負擔, 加快開發速度的原則來進行, 而不是把框架的知識點都給學習, 練習一遍. 另外用 Spring 的時候也要注意不要過渡依賴 Spring 框架, 注意它們的宣傳語是: 無侵入, 輕量級. 所以, 除非必要, 千萬不要讓 Spring 侵入你的代碼啊, 例如哪些 Aware 接口, 不也是變相的侵入了你的代碼嘛. 還有不要為了 Spring 而 Spring, 明明一段代碼用 new JavaBean().setUsername("xxx") 這樣的方式非常簡練, 你非要整出個 bean 的配置文件來, 純屬多此一舉. 所以無侵入只是個相對概念, 代碼寫少了, 但是 bean.xml 配置文件和 Spring.jar 你不能丟吧, 所以你已經被 Spring 侵入了, 而且以后想換第二家公司來做個框架解析你這些 XML 文件都困難呢, 因為 Spring 本身并不是可替換或者熱插拔的, 換句話說所有用 Spring 的代碼都已經被綁定到了 Spring 框架上.  好了, 先說一下目前了解的 Spring 的主要應用場合.

    1. 依賴注入, 主要是把一些需要經常修改的內容提取為 Bean, 也是盡量能不提取就不提取, 要不然到最后那個 bean.xml 增加到了幾千行你也就不會覺得這時候有什么方便的地方了;

    2. 整合 Hibernate, 這個可以說是最強大最實用的功能了, 也是為什么一提到 Spring 后面總是跟著 Hibernate 的原因. 在文檔的 12.2. Hibernate 有相關的介紹. 例如看看下面的調用代碼:

    import java.io.IOException;

    import org.springframework.context.ApplicationContext;
    import org.springframework.context.support.ClassPathXmlApplicationContext;

    import dao.Testuser;
    import dao.TestuserDAO;

    // 調用 Hibernate DAO
    public class Test {

     public static void main(String[] args) throws IOException {
      ApplicationContext context = new ClassPathXmlApplicationContext("applicationContext.xml");
      TestuserDAO dao =(TestuserDAO)context.getBean("userDAO");
      Testuser user = new Testuser();
    //  user.setxxx..., 設置值.
      dao.save(user);
     }

    }


    再看 DAO 的代碼:

    package dao;

    import org.springframework.orm.hibernate3.support.HibernateDaoSupport;

    /**
     * Data access object (DAO) for domain model class Testuser.
     */

    public class TestuserDAO extends HibernateDaoSupport {


     public void save(Testuser transientInstance) {
      getHibernateTemplate().save(transientInstance);
     }

     public void delete(Testuser persistentInstance) {
      getHibernateTemplate().delete(persistentInstance);

     }

    }

    是不是感覺簡單到令人難以置信?  要保存的實體 POJO 也很簡單:
    package dao;

    /**
     * Testuser generated by MyEclipse Persistence Tools
     */

    public class Testuser implements java.io.Serializable {

     // Fields

     private Integer id;

     private String username;

     private Integer age;
     
     getXXX();
     setXXX();
    }

    然后我們看主要的配置文件 applicationContext.xml 的內容:
    <?xml version="1.0" encoding="UTF-8"?>
    <beans
     xmlns="http://www.springframework.org/schema/beans"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd">

     <bean id="userDAO" class="dao.TestuserDAO">
      <property name="sessionFactory">
       <ref bean="hibernateSessionFactory" />
      </property>
     </bean>

     <bean id="hibernateSessionFactory"
      class="org.springframework.orm.hibernate3.LocalSessionFactoryBean">
      <property name="configLocation"
       value="file:src/hibernate.cfg.xml">
      </property>
     </bean>

    </beans>

    大家可以看到 DAO 的  HibernateSessionFactory 完全是配置出來的, 不用我們寫一行 Hibernate 初始化的代碼, Spring 已經幫我們做好了一切. 完整的代碼大家可以下載附件. 但是大家也請注意, 我們的代碼這樣做也是依賴了 Spring 的框架, 其實功能強大和不依賴具體的框架本身就是個謬論, 你不用(依賴)它的框架又怎么能用到它的強大的功能呢?

    3. 使用 JDBCTemplate 簡化普通的 JDBC 代碼編寫, 這個大家可以去看參考文檔(官方的 Spring Framework 開發參考手冊, 中英文均可) " 第 11 章 使用JDBC進行數據訪問", 老師也介紹過了.

    4. 整合 Struts, 也參考文檔里的內容, 具體是 15.4. Struts., 讓 Struts 的 Action 可以被注入內容.

    5. AOP 功能, 我沒用過, 只是聽一些朋友介紹說他們用的有, 所以建議大家了解一下, 個人覺得挺難理解, 開發的時候也是完全依賴 Spring 的 API, 比較難做. AOP 是 Spring 后來加入的內容, 按照官方文檔是"錦上添花的內容", 其實就是捆綁了自己的 AOP, 而 Spring 最核心的內容當屬依賴注入功能.

    6.  事務管理, 據說有一些人在用. 但是感覺開發起來挺費勁的, 不如 EJB 3 的標注來的簡便. 不過你被綁在了 Spring 框架上, 一般就只好用它自己做的這些個功能了.

    7. 其它的 Spring MVC 等內容, 都是可選項, 具體來說開發工具支持上并不如 Struts 來的那么直接好用.

    至于 Spring 的缺點:
    1. 不支持分布式訪問,分布式事務和集群, 這些是 EJB 3 的優點, 但是 Spring 目前還不支持;
    2. 配置使用 XML 文件, 如果文件內容很多的話對維護的人來說是個負擔;
    3. 提供 Spring 容器的只有一家公司(Interface21), 換句話說它是非標準的, 被個別公司壟斷的技術, 不能像 EJB 那樣可以換一家廠商的服務器, Spring 不存在第二家公司來做.

    另外開發工具的支持上, MyEclipse 5 可以快速的 5 分鐘就做好 Spring 整合 Hibernate 的框架代碼. 如果大家有興趣可以自己找點資料來看或者直接咨詢我.

    那么大家看了這篇文檔希望能有一些自己的想法, 把內容 100% 掌握是不現實的, 而且過了一陣子不用就肯定會忘, 所以現在需要的是了解概念, 能跑一些基礎的代碼以后用到的話再深入研究.

    posted on 2007-08-10 14:00 冬天出走的豬 閱讀(795) 評論(2)  編輯  收藏 所屬分類: spring

    FeedBack:
    # re: Spring 重點個人小結(摘錄) 2008-05-20 18:02 libran
    剛剛想學習spring,但是沒有頭緒,看了你的文章,受益匪淺,謝謝了!^_^

    另外,可以轉載你的文章么?我得blog是:http://blog.csdn.net/accp_fangjian  回復  更多評論
      
    # re: Spring 重點個人小結(摘錄) 2016-03-23 22:33 季雪
    能看見你的文章真是太好了,大神,我想問下你說“完整的代碼大家可以下載附件”,中的附件在哪里了,沒看見  回復  更多評論
      
    主站蜘蛛池模板: 日本中文字幕免费高清视频| 国产免费伦精品一区二区三区| 久久免费观看国产99精品| 国产成人亚洲精品91专区手机| 久久免费视频99| 亚洲AV午夜成人影院老师机影院 | 免费看黄的成人APP| 三上悠亚亚洲一区高清| 美女网站在线观看视频免费的| 亚洲国产成人影院播放| a级毛片免费观看在线| 亚洲狠狠婷婷综合久久久久 | 亚洲毛片在线观看| 24小时在线免费视频| 亚洲一区二区三区在线观看蜜桃| 国产情侣激情在线视频免费看| jiz zz在亚洲| 又黄又爽的视频免费看| 成人免费一区二区三区| 婷婷亚洲久悠悠色悠在线播放| 国内精品免费麻豆网站91麻豆| 亚洲依依成人亚洲社区| 亚洲国产av无码精品| 一个人免费视频在线观看www| 67pao强力打造67194在线午夜亚洲| 黄色片在线免费观看| 国产91成人精品亚洲精品| 中文字幕亚洲乱码熟女一区二区| 香蕉免费一区二区三区| 亚洲色最新高清av网站| 自拍偷自拍亚洲精品第1页| 在线看无码的免费网站| 久久精品国产亚洲AV电影网| 国产成A人亚洲精V品无码性色| 精品国产免费人成电影在线观看| 亚洲成a人无码亚洲成www牛牛| 亚洲中文久久精品无码| 曰曰鲁夜夜免费播放视频 | 怡红院亚洲红怡院在线观看| 亚洲午夜无码久久久久| 野花高清在线观看免费完整版中文|