Spring在web專案中配置的幾種方式的分析

2021-08-25 03:53:12 字數 2170 閱讀 6753

1、配置在web.xml中

a) 定義成

listene

org.springframework.web.context.contextloaderlistener

b) 定義成

servlet

springcontextservlet

org.springframework.web.context.contextloaderservlet

1也可以通過

是spring好像是預設載入的名稱(下次讀讀spring的源**看看)

使web 容器載入指定名稱路徑的spring 配置檔案。

這裡涉及乙個選擇的問題,參考文獻1中認為listerner要比servlet更好一些,因為listerner監聽應用的啟動和結束,而servlet得啟動要稍微延遲一些,如果在這時要做一些業務的操作,啟動的前後順序是有影響的。

關於listerner和servlet的區別我還不了解,還要去找找看到底區別在**。在我們專案中是放在servlet裡面設定的。

2、配置為struts的

上面說道要做單元測試,所以把spring設定成struts的plugin有點不方便,這個可以看看我們專案裡面的使用。

不過這裡很奇怪的有可以看見乙個springbeanholder,為什麼會是這個樣子呢?我們來看看servicelocator.init()的定義

public synchronized static void init(beanholder beanholder)

可以看到引數是beanholder,這個是乙個介面:

public inte***ce beanholder

look

,這裡就是把介面和實現分離了,以後如果不使用spring了,好,那我們換乙個實現,比如叫crabbeanholder :)

不過springbeanholder也很簡單:

public springbeanholder(){}

public object getbean(string beanid)

}我們再去look一下servicelocator:

public class servicelocator

private servicelocator(beanholder sh)

public synchronized static void init(beanholder beanholder)

public static servicelocator getinstance()

private void setserviceholder(beanholder beanholder)

public object getbean(string beanid)

public maste***cade getmaste***cade()

public static dataaccessstrategy getdataaccessstrategy()

public static datasource getdatasource()

public static metadatamanager getmetadatamanager()

public static object getbean(string beanid)

}這裡他也是呼叫了servicelocator。其實兩者的功能是一樣的,上次我們的開發經理提過讓我們注意兩者的區別,我想這裡的區別主要是語義上面的,servicelocator主要是直接定位各種業務façade他們都用直接的函式取得。而componentmanager主要是去一些細顆粒度的bean把。

另外,在單元測試**中,我們是這麼使用servicelocator的:

openproductfacade = (openproductfacade) servicelocator.getinstance().getopenproductfacade();

看看這樣是不是很方便,如果配置成為struts的plungin的話測試的**還要重新寫,這樣就不符合dry(don』t repeat yourself)的原則了。

今天總算是把專案中struts和spring結合的這個部分搞清楚了*^_^*,以前不清不楚的也可以做開發,而且也完成了兩個專案了,但是這樣總是不可以的,到時候碰到問題的時候都不知道怎麼去解決呢。而且某某人說過一句:只是用一件東西,不徹底把他搞清楚怎麼可以呢。

1、spring階段性的一點感受<

>

JSON在web專案中的使用

1.jquery的ajax方式傳遞json到後台 1 示例一 ajax datatype text json headers cache false,success function msg error function 2 示例二 var form vals form1 serializearra...

shiro在web專案中實現認證

在web專案pom.xml檔案中匯入jar包 commons logginggroupid commons loggingartifactid 1.1.1version dependency org.apache.shirogroupid shiro coreartifactid 1.2.3vers...

Redis Redis在專案中的配置

目錄 springboot整合redis spring整合redis pom檔案中引入依賴 org.springframework.boot spring boot starter data redis 配置yml檔案 新增redisconfig配置類 例項 1.註解使用 cacheable val...