重慶分公司,新征程啟航
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
為企業(yè)提供網(wǎng)站建設(shè)、域名注冊、服務(wù)器等服務(wù)
好程序員Java學(xué)習(xí)路線分享Spring創(chuàng)建Bean的3種方式,本文講解了在Spring 應(yīng)用中創(chuàng)建Bean的多種方式,包括自動創(chuàng)建,以及手動創(chuàng)建注入方式,實際開發(fā)中可以根據(jù)業(yè)務(wù)場景選擇合適的方案。
方式1:
使用Spring XML方式配置,該方式用于在純Spring 應(yīng)用中,適用于簡單的小應(yīng)用,當(dāng)應(yīng)用變得復(fù)雜,將會導(dǎo)致XMl配置文件膨脹 ,不利于對象管理。
方式2:
使用@Component,@Service,@Controler,@Repository注解
這幾個注解都是同樣的功能,被注解的類將會被Spring 容器創(chuàng)建單例對象。
@Component : 側(cè)重于通用的Bean類
@Service:標(biāo)識該類用于業(yè)務(wù)邏輯
@Controler:標(biāo)識該類為Spring MVC的控制器類
@Repository: 標(biāo)識該類是一個實體類,只有屬性和Setter,Getter
1 2 3 | @Component public class User{ } |
當(dāng)用于Spring Boot應(yīng)用時,被注解的類必須在啟動類的根路徑或者子路徑下,否則不會生效。
如果不在,可以使用@ComponentScan標(biāo)注掃描的路徑。
spring xml 也有相關(guān)的標(biāo)簽
1 2 3 4 5 6 | @ComponentScan(value={"com.microblog.blog","com.microblog.common"}) public class MicroblogBlogApplication { public static void main(String args[]){ SpringApplication.run(MicroblogBlogApplication.class,args); } } |
方式3:
使用@Bean注解,這種方式用在Spring Boot 應(yīng)用中。
@Configuration 標(biāo)識這是一個Spring Boot 配置類,其將會掃描該類中是否存在@Bean 注解的方法,比如如下代碼,將會創(chuàng)建User對象并放入容器中。
@ConditionalOnBean 用于判斷存在某個Bean時才會創(chuàng)建User Bean.
這里創(chuàng)建的Bean名稱默認(rèn)為方法的名稱user。也可以@Bean("xxxx")定義。
1 2 3 4 5 6 7 8 | @Configuration public class UserConfiguration{ @Bean @ConditionalOnBean(Location.class) public User user(){ return new User(); } } |
Spring boot 還為我們提供了更多類似的注解。
也和方式2一樣,也會存在掃描路徑的問題,除了以上的解決方式,還有使用Spring boot starter 的解決方式
在resources下創(chuàng)建如下文件。META-INF/spring.factories.
Spring Boot 在啟動的時候?qū)呙柙撐募瑥暮潍@取到配置類UserConfiguration。
spring.factories.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.log.config.UserConfiguration
如果不成功,請引入該依賴
1 2 3 4 5 |
這個方式也是創(chuàng)建SpringBoot-starter的方式。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機、免備案服務(wù)器”等云主機租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。