Spring實(shí)戰(zhàn)這本書(shū)真的是零零碎碎,東一筆西一筆的。
或者說(shuō)就是高手寫(xiě)作的通病,有的東西對(duì)于剛?cè)腴T(mén)的人來(lái)說(shuō)根本不知道怎么操作,但在高手眼里都是剛寫(xiě)項(xiàng)目就全部寫(xiě)好的東西,提都不提或者前面提了一下然后即使也是后面操作的必要前提也提都不提。
第二章第二節(jié)提到了自動(dòng)化裝配Bean,說(shuō)到要在java-config文件中使用@ComponentScan注解,才告知了項(xiàng)目開(kāi)啟了注解掃描。。
可問(wèn)題是你這個(gè)java-config文件如何讓項(xiàng)目知道?。???ApplicationContext context = new AnnotationConfigApplicationContext(CDPlayerConfig.class);
這樣子嘛?可這個(gè)創(chuàng)建在項(xiàng)目的哪個(gè)java文件呢??如果是web項(xiàng)目的話感覺(jué)放在ServletContext的監(jiān)聽(tīng)器的出生方法里比較合適,那其它項(xiàng)目呢?
哎。。心累
ApplicationContext context = new ......(..)
對(duì)注解掃描自動(dòng)裝配也好還是顯式配置也好,都是必須的。
因?yàn)榧词故亲⒔鈷呙枰仓皇遣恍枰阍谂渲梦募芯唧w寫(xiě)@Bean方法以及其中可能有的注入,而由Spring掃描有@Component的類以及其中可能有的@Autowired后由Spring創(chuàng)建 對(duì)應(yīng)對(duì)應(yīng)該類的@Bean方法并實(shí)現(xiàn)可能有的注入 到配置文件中去。所以配置文件也是必須加載的。
然后就一個(gè)最普通最簡(jiǎn)單的JAVA程序來(lái)說(shuō),必然會(huì)有一個(gè)public static void main(String args[])方法才能運(yùn)行起來(lái)。
應(yīng)當(dāng)在這個(gè)main方法中加載Spring上下文context,并且要用的引用變量的對(duì)象應(yīng)當(dāng)由上下文context的getBean方法來(lái)得到。只有這樣得到的引用變量所指的對(duì)象(實(shí)例)才是會(huì)被自動(dòng)裝配好的(比如這個(gè)類中有@Autowired的成員變量,那么只有通過(guò)contex.getBean得到的實(shí)例里這個(gè)成員變量才會(huì)被已經(jīng)注入了合適的Bean(成員變量所需要的類必須有@Component注解)。
在解決了這些問(wèn)題之后,就不難理解在一個(gè)web應(yīng)用程序中,為何向要向Servlet中無(wú)法自動(dòng)注入成員變量(或者實(shí)現(xiàn)在Servlet中注入成員變量不應(yīng)該在入門(mén)Spring時(shí)考慮)。因?yàn)檎麄€(gè)web項(xiàng)目,你是看不到main方法的,servlet也不是被Spring的上下文的getBean()方法創(chuàng)建出來(lái),而是經(jīng)由Tomcat創(chuàng)建。這樣創(chuàng)建出來(lái)的Servlet中你期望自動(dòng)注入的成員變量自然而然為空。而如果要干涉Servlet的創(chuàng)建,就要插手Tomcat創(chuàng)建Servlet的過(guò)程并做出修改,這件事不應(yīng)該在入門(mén)Spring(或者入門(mén)JavaEE)的時(shí)候就去嘗試。
北大青鳥(niǎo)APTECH成立于1999年。依托北京大學(xué)優(yōu)質(zhì)雄厚的教育資源和背景,秉承“教育改變生活”的發(fā)展理念,致力于培養(yǎng)中國(guó)IT技能型緊缺人才,是大數(shù)據(jù)專業(yè)的國(guó)家
達(dá)內(nèi)教育集團(tuán)成立于2002年,是一家由留學(xué)海歸創(chuàng)辦的高端職業(yè)教育培訓(xùn)機(jī)構(gòu),是中國(guó)一站式人才培養(yǎng)平臺(tái)、一站式人才輸送平臺(tái)。2014年4月3日在美國(guó)成功上市,融資1
北大課工場(chǎng)是北京大學(xué)校辦產(chǎn)業(yè)為響應(yīng)國(guó)家深化產(chǎn)教融合/校企合作的政策,積極推進(jìn)“中國(guó)制造2025”,實(shí)現(xiàn)中華民族偉大復(fù)興的升級(jí)產(chǎn)業(yè)鏈。利用北京大學(xué)優(yōu)質(zhì)教育資源及背
博為峰,中國(guó)職業(yè)人才培訓(xùn)領(lǐng)域的先行者
曾工作于聯(lián)想擔(dān)任系統(tǒng)開(kāi)發(fā)工程師,曾在博彥科技股份有限公司擔(dān)任項(xiàng)目經(jīng)理從事移動(dòng)互聯(lián)網(wǎng)管理及研發(fā)工作,曾創(chuàng)辦藍(lán)懿科技有限責(zé)任公司從事總經(jīng)理職務(wù)負(fù)責(zé)iOS教學(xué)及管理工作。
浪潮集團(tuán)項(xiàng)目經(jīng)理。精通Java與.NET 技術(shù), 熟練的跨平臺(tái)面向?qū)ο箝_(kāi)發(fā)經(jīng)驗(yàn),技術(shù)功底深厚。 授課風(fēng)格 授課風(fēng)格清新自然、條理清晰、主次分明、重點(diǎn)難點(diǎn)突出、引人入勝。
精通HTML5和CSS3;Javascript及主流js庫(kù),具有快速界面開(kāi)發(fā)的能力,對(duì)瀏覽器兼容性、前端性能優(yōu)化等有深入理解。精通網(wǎng)頁(yè)制作和網(wǎng)頁(yè)游戲開(kāi)發(fā)。
具有10 年的Java 企業(yè)應(yīng)用開(kāi)發(fā)經(jīng)驗(yàn)。曾經(jīng)歷任德國(guó)Software AG 技術(shù)顧問(wèn),美國(guó)Dachieve 系統(tǒng)架構(gòu)師,美國(guó)AngelEngineers Inc. 系統(tǒng)架構(gòu)師。