SpringBoot簡化了Spring應用程序開發
Spring 歷史:
Spring 誕生時是Java企業版(Java Enterprise Edition,JEE,也稱J2EE)的輕量級替代品。無需開發重量級的Enterprise JavaBean(EJB),Spring爲企業級Java開發提供了簡單方法,通過依賴注入和麪向切面編程,用簡單的Java對象(Plain Old Java Object,POJO)實現了EJB的功能。
雖然Spring的組建代碼是輕量級的,但是配置卻是重量級的。
Spring2.5引入了基於註解的組建掃描,Spring3.0引入了基於Java的配置。
SpringBoot的核心:
- 自動配置:針對Spring應用程序的常見應用功能,SpringBoot能夠自動提供相關配置。
- 起步依賴:告訴SpringBoot需要什麼功能,它就能引入什麼庫。
- 命令行界面:可選特性,無需傳統的項目構建,只需寫代碼就能完成完整的應用程序。
- Actuator:能夠深入到運行中的Spring應用程序,窺探應用程序內部情況。
使用Spring Initial初始化Spring Boot項目
幾種用法:
- 通過Web界面使用:http://start.spring.io
- 通過Spring Tool Suite使用:http://spring.io/tools/sts下載。
- 通過IntelliJ IDEA使用
- 使用Spring Boot CLI使用
第一個SpringBoot應用程序
使用IntelliJ IDEA創建SpringBoot項目:
file->new project->左側欄選擇Spring Initial
項目結構:
項目結構解釋:
- build.gradle:Gradle構建說明文件。
- SpringbootFirstappApplication.java:應用程序的啓動引導類,也是主要的Spring配置類。
- application.properties:用於配置應用程序和Spring boot的屬性。
- SpringbootFirstappApplicationTest.java:一個基本的集成測試類。
SpringbootFirstappApplication.java(啓動引導類,配置類)
代碼:
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class SpringbootFirstappApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootFirstappApplication.class, args);
}
}
@SpringBootApplication:開啓了組件掃描和SpringBoot的自動配置功能。
@SpringBootApplication將3個有用的註解結合在一起
Spring的@Configuration:標明該類使用Spring基於Java的配置。
Spring的@ComponentScan:啓用組件掃描,這樣程序中的Web控制器和其他組件才能被自動發現並且註冊爲Spring應用程序上下文中的Bean。
Spring Boot的@EnableAutoConfiguration:開啓SpringBoot的自動配置。application.properties:Initializr爲你生成的application.properties文件是一個空文件。可以刪除,不會對程序有任何影響。也可以在文件中添加條目,細粒度的調整Spring Boot的自動配置。完全不用告訴Spring Boot爲你加載application.properties,只要它存在就會被加載,Spring和應用程序都能獲取其中的屬性。
運行項目:使用命令行運行項目,右鍵運行Application.java,配置Tomcat Local Server。
使用命令行:
gradle:$gradle bootrun
maven:spring-boot:run
Spring Boot項目構建
構建工具:
- Maven
- Gradle
Spring Boot 起步依賴
Spring Boot 通過提供衆多的起步依賴來降低項目依賴的複雜度。
起步依賴本質上是一個Maven項目對象模型(Project Object Model,POM),定義了對其他庫的傳遞依賴,這些東西加載一起即支持某項功能。
通過添加起步依賴,替換向項目構建文件裏添加一堆單獨的庫依賴。
指定基於功能的依賴: 比如:做一個Web應用程序。只需要添加Spring Boot 的Web起步依賴即可。它聲明的依賴也會被傳遞依賴進來。
覆蓋,移除,指定起步依賴引入的傳遞依賴:通過構建工具中的功能,選擇性的覆蓋它們引入的傳遞依賴的版本號,排除傳遞依賴,爲SpringBoot起步依賴沒有涵蓋的庫指定依賴。使用時要小心,避免出現兼容性問題
1.移除傳遞依賴Gradle:
compile("org.springframework.boot:spring-boot-starter-web"){excluede group:'com.fasterxml.jackson.core'}
Maven:
<dependency><goupId>org.springframework.boot</goupId><artifactId>spring-boot-starter-web</artifactId><exclusions><exclusion><groupId>com.fasterxml.jackson.core</groupId></exclusion></exclusions></dependency>
2.覆蓋依賴:
指定依賴版本號,起步依賴本身版本是由正在使用的SpringBoot的版本決定的,而起步依賴會決定它們引入的傳遞依賴的版本。
Spring Boot自動配置
Spring Boot自動配置承擔起了配置Spring的重任,因此你能專注於編寫自己的應用程序。
Spring Boot利用條件化註解配置實現自動配置:
例子:
@Conditional(JdbcTemplateCondition.class)
public MyService myService(){
...
}
在這個例子中,只有當JdbcTemplateCondition類的條件成立時纔會創建MyService這個Bean。也就是說MyService Bean創建的條件是ClassPath中有JdbcTemplateCondition,否則這個Bean的聲明就會被忽略掉。
SpringBoot提供的條件化註解:
這篇文章後將會介紹和總結Spring Boot的更多內容!