国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

【迷你微信】基于MINA、Hibernate、Spring、Protobuf的即時聊天系統:4.技術簡介之Spring

2019-11-15 00:06:02
字體:
來源:轉載
供稿:網友
【迷你微信】基于MINA、Hibernate、SPRing、Protobuf的即時聊天系統:4.技術簡介之Spring

項目Logo歡迎閱讀我的開源項目《迷你微信》服務器與《迷你微信》客戶端

Spring是一個輕量級的java 開發框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中闡述的部分理念和原型衍生而來。它是為了解決企業應用開發的復雜性而創建的。框架的主要優勢之一就是其分層架構,分層架構允許使用者選擇使用哪一個組件,同時為 J2EE 應用程序開發提供集成的框架。Spring使用基本的JavaBean來完成以前只可能由EJB完成的事情。然而,Spring的用途不僅限于服務器端的開發。從簡單性、可測試性和松耦合的角度而言,任何Java應用都可以從Spring中受益。Spring的核心是控制反轉(IoC)和面向切面(AOP)。簡單來說,Spring是一個分層的JavaSE/EEfull-stack(一站式) 輕量級開源框架。——百度百科

序言

博主在《迷你微信》服務器項目上對Spring的使用主要在于依賴注入,也是Spring的核心功能,通過依賴注入的方法,我們就可以大量的減少動態創建和單例的使用,由Spring進行創建初始化和注入。

配置與使用

關于Spring的環境配置就不在這里詳細說明了,只要在項目中導入Spring的jar包和添加applicationContext.xml文件就好了,在這里咱們主要講講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" xmlns:aop="http://www.springframework.org/schema/aop"xmlns:tx="http://www.springframework.org/schema/tx"xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.0.xsd           http://www.springframework.org/schema/aop http://www.springframework.org/schema/aop/spring-aop-2.0.xsd           http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-2.0.xsd"><!--上面的不用細看,都是配置必須的東西,主要是下面的東西 --><!-- Log模塊 --><bean id="MyLogger" class="server.MyLogger"></bean><!-- 網絡模塊 --><bean id="ServerNetwork" class="server.ServerNetwork"><property name="myLogger"><ref bean="MyLogger" /></property></bean>

在這里,博主刪減了大量代碼,只為了簡要的介紹Spring的簡單使用,詳細代碼請參考開源項目《迷你微信》服務器。首先,創建了一個叫MyLogger的Bean,這個名字是你自己起的,后面的class參數是你這個類所在的項目位置;接著,是ServerNetwork,這個類具體是干啥的這里就不介紹了,與討論的東西無關。可以看到,ServerNetwork中有一個參數myLogger,而這個myLogger又有一個指向MyLogger的引用,代表的意義是,在Java的類ServerNetwork中,有一個叫myLogger的參數,這個參數所要設置的值為之前創建的一個叫做MyLogger的東東。這里,博主要向大家強調Spring的幾個特點:

  • Spring的依賴注入是先創建好所有的bean之后,才進行參數的注入,所以不用擔心bean前后順序導致的注入null問題
  • 在要被注入的類中必須要有Set方法,比如本示例中,在ServerNetwork類中,必須有setMyLogger方法。
  • 由于注入階段是在創建完所有bean對象后才開始的,所以不要在要創建的對象的構造方法中使用要注入的對象。
與Mina的聯合使用

在使用Mina框架時,Spring是可以跟Mina緊密結合的,讓Spring來創建Mina的整個連接過程是配置式編程的一種典型的做法,詳細可以參考官網介紹,博主表示官網說的太簡略,所以自己也只配出了一半左右。

初始化問題

由于上面所述的“由于注入階段是在創建完所有bean對象后才開始的,所以不要在要創建的對象的構造方法中使用要注入的對象”問題,會導致很多類的初始化出現問題,因為若是將初始化方法寫在構造方法中,調用到未注入的參數,就會出現NullPointer的異常,這種問題如何解決呢?博主發現了一個辦法:

首先,在每個需要初始化的類中添加init()方法來進行初始化:

public class A{public A(){}public void init(){// 初始化}}

這樣,就將初始化過程和構造方法分離開來了。然而,初始化方法何時調用呢?請接著看(代碼來自開源項目《迷你微信》服務器)

public class Server { public static void main(String[] args) throws IOException { // 開啟Spring,進行依賴注入 ApplicationContext ctx = new FileSystemXmlApplicationContext("applicationContext.xml"); // 調用A的初始化方法 ((A) ctx.getBean("A")).init(); }}

我們可以看到,首先,我們在最開始的Main方法內運行了applicationContext.xml文件,他是Spring的配置文件,可以開始Spring的依賴注入,然后我們從這里面,拿出已經被Spring實例化的A對象,這時,所有配置的對象都已經實例化和參數注入好了,就可以調用其中的初始化方法init()了。

歡迎閱讀我的開源項目《迷你微信》服務器與《迷你微信》客戶端


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 台中县| 万荣县| 天镇县| 阜宁县| 仙桃市| 比如县| 西充县| 达孜县| 海淀区| 石柱| SHOW| 鹰潭市| 霍城县| 平遥县| 安吉县| 广安市| 惠州市| 莱芜市| 沈阳市| 南开区| 越西县| 东山县| 邮箱| 长汀县| 雅安市| 旅游| 武川县| 桃源县| 咸阳市| 贵港市| 巴塘县| 广安市| 于都县| 黄山市| 江山市| 阜新| 徐汇区| 额敏县| 读书| 讷河市| 新余市|