第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定

@Configuration(注解類) + @Bean(注解方法) 相當(dāng)于xml配置中bean,那么與@Component, @Repository, @Service, @Controller定義的Bean有什么區(qū)別

@Configuration(注解類) + @Bean(注解方法) 相當(dāng)于xml配置中bean,那么與@Component, @Repository, @Service, @Controller定義的Bean有什么區(qū)別

正在回答

3 回答

一樓說得太粗了。這樣說,我也可以說golang和Java本質(zhì)沒什么區(qū)別,只是語言理念不同。

二樓從應(yīng)用的角度,解釋了一樓提出的分類問題。

當(dāng)然,我也懶得詳細(xì)說明,簡單粘貼以前寫的一份隨筆記錄:

但從官方文檔來看,兩者還意味著bean加載方式的不同。

(@Bean也需要標(biāo)注在@Configuration標(biāo)注的類中,@Configuration繼承@Component)


雖然Component注解也會當(dāng)做配置類,但是并不會為其生成CGLIB代理Class。而@Configuration標(biāo)注的配置類,會通過CGLIB代理Class(詳見ConfigurationClassPostProcessor#enhanceConfigurationClasses),所以每次都是獲取IOC容器中的固定的bean。


@Bean就得看所在類是@Component標(biāo)注,還是@Configuration標(biāo)注了。

在配置類的方法間調(diào)用時,如果類時@component標(biāo)注的,每次調(diào)用獲取的都是新的實(shí)體;而如果是@configuration標(biāo)注的話,每次調(diào)用返回的是同一個實(shí)體Bean。其他方面都是相同,可以無差別使用(裝配注入等)。


這是因為@Configuration標(biāo)注下的@Bean調(diào)用函數(shù)使用都是代理對象,獲取的都是從IOC容器里獲取的bean,因此都是同一個。而@Component標(biāo)注下的@Bean下只是普通的函數(shù)方法調(diào)用,因此每次調(diào)用后,都不是同一個。


(另外,bean最早注冊進(jìn)入IOC容器,也還是反射方式。并且@Scope是注入處的范圍,不在此)


另外建議題主,可以看看官方文檔。這個問題在官方文檔中,有明確說明的。


0 回復(fù) 有任何疑惑可以回復(fù)我~

@Component 是可以用以所有類 @Repository一般用于持久層操作數(shù)據(jù)庫上的 @Service 一般用于業(yè)務(wù)邏輯里面的實(shí)現(xiàn)類,@Controller 一般是用于控制器上的注解 @Bean 一般是跟@Configuration一起用的相當(dāng)于<beans><bean></bean></beans>


0 回復(fù) 有任何疑惑可以回復(fù)我~

都是bean,本質(zhì)上沒有什么區(qū)別,只是對bean的應(yīng)用分了類

0 回復(fù) 有任何疑惑可以回復(fù)我~

舉報

0/150
提交
取消
Spring入門篇
  • 參與學(xué)習(xí)       268802    人
  • 解答問題       1017    個

為您帶來IOC和AOP的基本概念及用法,為后續(xù)高級課程學(xué)習(xí)打下基礎(chǔ)

進(jìn)入課程

@Configuration(注解類) + @Bean(注解方法) 相當(dāng)于xml配置中bean,那么與@Component, @Repository, @Service, @Controller定義的Bean有什么區(qū)別

我要回答 關(guān)注問題
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號