一、SpringBoot常用注解
二改含、SpringBoot自動配置機(jī)制
SpringBoot版本:1.5.13.RELEASE
對應(yīng)官方文檔鏈接:https://docs.spring.io/spring-boot/docs/1.5.13.RELEASE/reference/htmlsingle/
上一篇:SpringBoot 入門篇(一) Hello World
一向抢、SpringBoot常用注解
??在上一篇文章中引用了官方文檔的入門例子,這個例子中只是告訴我們?nèi)绾稳タ焖偕鲜諷pringBoot,我們實際開發(fā)中,肯定不會在一個類中把所有業(yè)務(wù)處理包圓静檬,通常會劃分出Controller層、Service層并级、Dao層等拂檩。SpringBoot官方文檔給出了如何去規(guī)劃我們的代碼,并且如何正確使用它們死遭。
??官方文檔給出了一個常用的代碼層次劃分結(jié)構(gòu)圖
??官方文檔推薦將包含main方法的類放到項目的根包下,并且使用@SpringBootApplication注解進(jìn)行標(biāo)注凯旋,該注解會將當(dāng)前類所在路徑作為基準(zhǔn)目錄呀潭,掃描基準(zhǔn)目錄下所有類(包含子目錄中的類)钉迷。
??@SpringBootApplication是SpringBoot提供的一個常用注解,它包含了另外3個很常用的注解钠署,分別是@EnableAutoConfiguration糠聪,@ComponentScan和@Configuration。
@SpringBootApplication // 等價于 @Configuration + @EnableAutoConfiguration + @ComponentScan
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
(1)@EnableAutoConfiguration是SpringBoot提供的一個注解谐鼎,它的作用是啟動SpringBoot的自動配置機(jī)制舰蟆;
(2)@ComponentScan是Spring框架提供的一個注解,它能掃描項目中所有的組件(@Component, @Service, @Repository, @Controller等進(jìn)行標(biāo)注的類)并將其注冊到Spring容器狸棍;
(3)@Configuration是Spring框架提供的一個注解身害,它能替代傳統(tǒng)的xml配置文件,將Spring框架中的xml文件以Java類的形式替代草戈,去XML是SpringBoot的一個重要思想塌鸯。
??在項目中我們可以將類同時標(biāo)注@EnableAutoConfiguration、@ComponentScan和@Configuration唐片,所起的作用和@SpringBootApplication是相同的丙猬,但需要注意的是,@EnableAutoConfiguration费韭、@ComponentScan和@Configuration這3個注解并非是捆綁銷售茧球,我們可以將他們?nèi)我饨M合。官方文檔中給出了如下的一個例子
@Configuration
@EnableAutoConfiguration
@Import({ MyConfig.class, MyAnotherConfig.class })
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
可以看到星持,代碼中并沒有使用@ComponentScan注解抢埋,而是使用@Import注解來導(dǎo)入組件并將其聲明成一個bean。當(dāng)然钉汗,如果我們對XML文件念念不忘羹令,我們可以使用@ImportResource注解來導(dǎo)入XML文件,@Import和@ImportResource都是Spring框架提供的注解损痰。
@Configuration
@EnableAutoConfiguration
@ImportResource(locations={"classpath:applicationContext.xml"})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
二福侈、SpringBoot自動配置機(jī)制
??SpringBoot總是嘗試根據(jù)我們的jar依賴,來為我們的項目進(jìn)行一些自動配置以減輕開發(fā)者環(huán)境搭建的負(fù)擔(dān)卢未,例如我們項目中依賴了spring-boot-starter-web肪凛,SpringBoot則會自動為我們進(jìn)行web環(huán)境的配置(如添加內(nèi)置Tomcat、配置SpringMVC等)辽社。
??SpringBoot自動配置的幕前黑手就是上一節(jié)中提到的@EnableAutoConfiguration注解伟墙。SpringBoot自動配置是非入侵的,我們可以開啟我們自己的配置來替代自動配置滴铅,例如如果我們添加了自己的數(shù)據(jù)源配置戳葵,則SpringBoot默認(rèn)內(nèi)置的數(shù)據(jù)庫服務(wù)則不會起作用。
??我們可以在啟動時加入 --debug 參數(shù)來查看當(dāng)前有那些自動配置汉匙,命令行直接執(zhí)行java -jar ***.jar --debug即可拱烁。如果想在IDEA中查看生蚁,則首先進(jìn)行如下配置
執(zhí)行main方法即可看到當(dāng)前有那些自動配置
如果我們不需要某些自動配置,可以通過@EnableAutoConfiguration注解的exclude或者excludeName屬性來指定不需要的自動配置戏自,需要注意的是邦投,當(dāng)不需要的進(jìn)行自動配置的類不在classpath下時,此時只能通過excludeName屬性指定類的全路徑名來排除不需要的自動配置擅笔。當(dāng)然志衣,還有一種辦法是在SpringBoot配置文件中指定spring.autoconfigure.exclude,SpringBoot配置文件一般是指classpath下默認(rèn)的application.properties或者application.yml或者application.yaml猛们,在這里不做說明念脯,后續(xù)的文章會進(jìn)行詳細(xì)介紹。
@Configuration
@EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class})
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
上一篇:SpringBoot 入門篇(一) Hello World
下一篇:SpringBoot 入門篇(三) SpringApplication