好程序員Java學(xué)習(xí)路線(xiàn)分享Spring創(chuàng)建Bean的3種方式,本文講解了在Spring 應(yīng)用中創(chuàng)建Bean的多種方式,包括自動(dòng)創(chuàng)建,以及手動(dòng)創(chuàng)建注入方式,實(shí)際開(kāi)發(fā)中可以根據(jù)業(yè)務(wù)場(chǎng)景選擇合適的方案。
在武清等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站制作、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作按需開(kāi)發(fā)網(wǎng)站,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),網(wǎng)絡(luò)營(yíng)銷(xiāo)推廣,外貿(mào)網(wǎng)站建設(shè),武清網(wǎng)站建設(shè)費(fèi)用合理。
方式1:
使用Spring XML方式配置,該方式用于在純Spring 應(yīng)用中,適用于簡(jiǎn)單的小應(yīng)用,當(dāng)應(yīng)用變得復(fù)雜,將會(huì)導(dǎo)致XMl配置文件膨脹 ,不利于對(duì)象管理。
方式2:
使用@Component,@Service,@Controler,@Repository注解
這幾個(gè)注解都是同樣的功能,被注解的類(lèi)將會(huì)被Spring 容器創(chuàng)建單例對(duì)象。
@Component : 側(cè)重于通用的Bean類(lèi)
@Service:標(biāo)識(shí)該類(lèi)用于業(yè)務(wù)邏輯
@Controler:標(biāo)識(shí)該類(lèi)為Spring MVC的控制器類(lèi)
@Repository: 標(biāo)識(shí)該類(lèi)是一個(gè)實(shí)體類(lèi),只有屬性和Setter,Getter
1 2 3 | @Component public class User{ } |
當(dāng)用于Spring Boot應(yīng)用時(shí),被注解的類(lèi)必須在啟動(dòng)類(lèi)的根路徑或者子路徑下,否則不會(huì)生效。
如果不在,可以使用@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)識(shí)這是一個(gè)Spring Boot 配置類(lèi),其將會(huì)掃描該類(lèi)中是否存在@Bean 注解的方法,比如如下代碼,將會(huì)創(chuàng)建User對(duì)象并放入容器中。
@ConditionalOnBean 用于判斷存在某個(gè)Bean時(shí)才會(huì)創(chuàng)建User Bean.
這里創(chuàng)建的Bean名稱(chēng)默認(rèn)為方法的名稱(chēng)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 還為我們提供了更多類(lèi)似的注解。
也和方式2一樣,也會(huì)存在掃描路徑的問(wèn)題,除了以上的解決方式,還有使用Spring boot starter 的解決方式
在resources下創(chuàng)建如下文件。META-INF/spring.factories.
Spring Boot 在啟動(dòng)的時(shí)候?qū)?huì)掃描該文件,從何獲取到配置類(lèi)UserConfiguration。
spring.factories.
org.springframework.boot.autoconfigure.EnableAutoConfiguration=com.log.config.UserConfiguration
如果不成功,請(qǐng)引入該依賴(lài)
1 2 3 4 5 |
這個(gè)方式也是創(chuàng)建SpringBoot-starter的方式。