1.
單元測(cè)試不能只測(cè)試正確性,一般需要單元測(cè)試走完所有的分支,測(cè)試拋出的異常是否符合期望,測(cè)試邊界值是不是成立,測(cè)試環(huán)境出現(xiàn)狀況下程序的異常的友好情況
2.
在某些情況下,兩個(gè)類互相的依賴和關(guān)聯(lián),比如一個(gè)上下文類和一個(gè)上下文類中具體的類的依賴,這些是沒辦法的,上下文類需要管理在它里面的類(容器作用),具體的類也要感知到他的上下文的存在(他的環(huán)境),這樣環(huán)境和類就耦合了,這個(gè)是系統(tǒng)設(shè)計(jì)時(shí)必要的耦合,這時(shí)可以使用設(shè)計(jì)原則來(lái)優(yōu)化設(shè)計(jì):
面向接口編程,特別是上下文,提供接口,這樣和具體類進(jìn)行聯(lián)系的就是上下文接口,在改變環(huán)境時(shí),只需要改變上下文的實(shí)現(xiàn),不需要?jiǎng)咏涌冢龅搅艘欢ǖ乃神詈?/span>.
多用組合,少用繼承,這個(gè)是必須的,使用繼承在上面的例子中一點(diǎn)可能也沒有,繼承必須有一個(gè)原則:是is-a的關(guān)系,就是直系親屬的關(guān)系
3.
Spring的ContextLoaderListener是web應(yīng)用啟動(dòng)監(jiān)聽器,實(shí)現(xiàn)了ServletContextListener接口,他所做的事情有:
創(chuàng)建ContextLoader實(shí)例,然后委托ContextLoader初始化WebApplicationContext,
默認(rèn)為XmlWebApplicationContext,其它自定義的初始化主要是針對(duì)contextClass
(不同的WebapplicationContext實(shí)現(xiàn))和contextConfigLocation(配置文件的寫法)