javascript
Spring Boot学习笔记-实践建言
2019獨角獸企業重金招聘Python工程師標準>>>
本文延續《Spring Boot學習筆記-快速示例》,從開發指南中摘出一些實踐經驗可供參考。這也是筆者看到的眼前一亮之處,開發的實踐經驗不是讀書可以學來的,除了看別人的開源源碼(當然一般公司內部的代碼不允許對外公開的),大多時候得靠自己摸索了。Spring Boot開發指南能從實戰的角度提出一些建言,值得贊揚。
構建工具
利用Spring Boot開發應用,之前就建議選擇一種構建工具。筆者習慣Maven,在此只提及Maven。當我們的pom.xml中繼承了spring-boot-starter-parent,就會得到一些默認配置,如下所示。
- 默認編譯級別為Java 1.6
- 源碼編碼為UTF-8
- 一個依賴管理節點,允許你省略普通依賴的 <version> 標簽,繼承自spring-boot-dependencies POM。
- 合適的資源過濾
- 合適的插件配置(exec插件,surefire,Git commit ID,shade)針對 application.properties 和 application.yml 的資源過濾
**ps:**由于默認配置文件接收Spring風格的占位符(${...}),Maven filtering改用 @..@ 占位符(你可以使用Maven屬性 resource.delimiter 來覆蓋它) 。
熟悉Maven的使用者,可以覆蓋上述的默認配置。
項目包結構
項目的啟動類
Spring的常用的配置方式有XML和Java類兩種。Spring Boot建議使用Java配置的方式,并用@Configuration類作為主要源,通常定義main方法的類是主要源的一個很好候選。
筆者之前使用的是XML的配置方式,項目里會有多個Spring的xml配置文件,但applicationContext.xml會import其他的配置文件,其實這就相當于主要源。
@Configuration @EnableAutoConfiguration @ComponentScan public class Application {public static void main(String[] args) throws Exception {SpringApplication.run(Application.class, args);} }參見上面的代碼,綜合上述的內容,可以看出通常一個Spring Boot應用,需要一個啟動的入口,我們可以稱為啟動類,它包含main方法,負責SpringApplication.run()方法來運行應用。@Configuration標識啟動類作為主要配置源。由于啟動類位于根包下,@ComponentScan不需要配置basePackage屬性,默認掃描根包下的所有Spring組件類,包括其他的@Configuration類。@EnableAutoConfiguration注解可以根據我們依賴的包,推測并自動配置相關的內容以供使用。這也是上篇文章中快速示例的代碼,會如此簡潔,幾乎0配置便可運行應用的原因!
Spring配置方式
這里其實牽涉到Spring Java配置方式的應用,所以建議大家去熟悉一下該方面的內容。
有人會問,如果我確實需要xml配置文件呢?我們不排除特殊情況下Java配置方式無解的時刻,你當然可以導入xml配置內容。只需要在@Configuration類上使用@ImportResource注解即可。
雖然筆者以往習慣使用xml配置方式,但也不由自主地下定決定盡量轉向Java配置方式,以符合Spring Boot使用習慣,使用xml配置作為輔助手段。
剛才上面筆者提到了@EnableAutoConfiguration具有自動配置的“神奇特效”。但有時自動配置的內容并非我們所期望的那樣,我們完全可以自定義相同的內容去覆蓋自動配置中的那些。
你只需要打開控制臺輸出的debug日志,即可看到一份自動配置報告,列出了所有的自動配置項。如何輸出debug日志,可參考筆者的另一篇文章。
如果發現應用了你不想要的特定自動配置類,你可以使用@EnableAutoConfiguration注解的排除屬性來禁用它們。
@Configuration @EnableAutoConfiguration(exclude={DataSourceAutoConfiguration.class}) public class MyConfiguration { }@ComponentScan注解會掃描到Spring組件并自動注冊bean,需要使用的時候跟平常一樣,使用@Autowired等注解直接標注即可。
一般情況下,很多Spring Boot開發者總是使用@Configuration,@EnableAutoConfiguration和@ComponentScan注解他們的main類的。如果你遵循了上述建言更是如此。因此為了方便,Spring Boot提供了@SpringBootApplication注解,它就相當于@Configuration,@EnableAutoConfiguration和@ComponentScan注解,一個頂三個!那么我們的啟動類更簡單了。
@SpringBootApplication public class Application {public static void main(String[] args) throws Exception {SpringApplication.run(Application.class, args);} }轉載于:https://my.oschina.net/angerbaby/blog/551501
總結
以上是生活随笔為你收集整理的Spring Boot学习笔记-实践建言的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu -- 安装memcache
- 下一篇: ubuntu -- 不输入密码执行sud