在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Java  C/ java,spring:如何讓項(xiàng)目知道開(kāi)啟了注解掃描?

java,spring:如何讓項(xiàng)目知道開(kāi)啟了注解掃描?

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í)候就去嘗試。

2018年4月23日 23:42
編輯回答
蝶戀花

你可以參考一下文檔的這部分。

文檔中創(chuàng)建 context 是在 main 方法。

2017年1月23日 16:58
編輯回答
假灑脫

在xml中有這樣一行配置

<context:component-scan base-package="com.fuck.java.*"/>

如果是使用的Java配置方式就是在main方法所在類上的注解@ComponentScan

2017年9月7日 13:32