Spring Boot 入門學習
1、簡介Spring Boot來簡化Spring應用開發,約定大於配置, 去繁從簡,just run就能創建一個獨立的,產品級別的應用。背景:J2EE笨重的開發、繁多的配置、低下的開發效率、 複雜的部署流程、第三方技術集成難度大。解決:「Spring全家桶」時代。Spring Boot --> J2EE一站式解決方案Spring Cloud --> 分散式整體解決方案優點:1、 快速創建獨立運行的Spring項目以及與主流框架集成2、 使用嵌入式的Servlet容器,應用無需打成WAR包3、 starters自動依賴與版本控制4、 大量的自動配置,簡化開發,也可修改默認值5、 無需配置XML,無代碼生成,開箱即用6、 准生產環境的運行時應用監控7、 與雲計算的天然集成等你學springboot的第一個helloworld時候,你對比一下以前你整合其他框架是多麼的繁瑣,每次配置文件時候都要弄一大堆。說起springboot不得不說一下大時代背景的微服務。2、微服務在 2014,Martin Fowler發布了一篇關於微服務的博客,相信很多朋友了解微服務架構都是從Martin Fowler的那篇文章開始。而實際上,Martin Fowler卻並不是最早談及微服務架構的。但是Martin Fowler的這篇文章可以說是最易懂的版本,通俗易懂的講解了什麼是微服務架構。原文地址中文版地址地址單體應用:ALL IN ONE微服務:每一個功能元素終都是一個可獨立替換和獨立升級的軟體單元;
微服務:架構風格(服務微化)一個應用應該是一組小型服務;可以通過HTTP的方式進行互通;
更詳細說明可以到去看原文或翻譯版的(幾乎接近原文意思)面對大型分散式的應用spring為我們提供了一個很明確的開發方向,如下圖:
沒有學過的spring cloud的小夥伴,學完了spring boot的趕緊去學spring cloud(微服務框架),當然阿里的微服務框架dubbo最好也學一下(如今dubbo也重新維護了)。學習spring boot 你必須掌握以下內容:1、 Spring框架的使用經驗2、 熟練使用Maven進行項目構建和依賴管理3、熟練使用Eclipse或者IDEA環境約束1、jdk1.8:Spring Boot 推薦jdk1.7及以上;2、maven3.x:maven 3.3以上版本;Apache Maven 3.5.33、IntelliJIDEA2018 : 2018.14、SpringBoot 1.5.11.RELEASE:1.5.10;1、MAVEN設置給maven 的settings.xml配置文件的pro?les標籤添加
jdk‐1.8
true
1.8
1.8
1.8
1.8
在settings標籤添加
D:DataSourceRepMaven(你本地倉庫地址)在mirrors標籤添加
alimaven
aliyun maven
http://maven.aliyun.com/nexus/content/groups/public/
central
2、idea配置整合idea
3、Spring Boot HelloWorld功能需求很簡單:向瀏覽器發送hello請求,伺服器接受請求並處理,響應Hello World字元串;我們可以參考官網的quick-start 案例來做。quick-start鏈接官網quick-start截圖:
1、創建一個maven工程;(jar)
2、導入spring boot相關的依賴
org.springframework.boot
spring-boot-starter-parent
1.5.10.RELEASE
org.springframework.boot
spring-boot-starter-web
下面主程序跟Controller我分開寫(官網寫在一起的)3、編寫一個主程序;啟動Spring Boot應用
/**
* @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用
*/
@SpringBootApplication
publicclassHelloWorldMainApplication{
publicstaticvoidmain(String[]args) {
// Spring應用啟動起來
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}4、編寫相關的Controller、Service
@Controller
publicclassHelloController{
@ResponseBody
@RequestMapping("/hello")
publicStringhello(){
return"Hello World!";
}
}
5、運行主程序測試6、簡化部署在打包項目時候我們只需要使用下面這個插件進行打包即可,在pom文件project結束標籤前一行加入即可。
org.springframework.boot
spring-boot-maven-plugin
將這個應用打成jar包,springboot自動幫我們集成Tomcat,我們無需另外部署到tomcat。將生成的jar複製到桌面,直接使用java -jar (jar包名)的命令進行執行或者雙擊執行jar也可以;4、Hello World探究1、POM文件1)、父項目
org.springframework.boot
spring-boot-starter-parent
1.5.9.RELEASE
他的父項目是
org.springframework.boot
spring-boot-dependencies
1.5.9.RELEASE
../../spring-boot-dependencies
他來真正管理Spring Boot應用裡面的所有依賴版本;
spring-boot-dependencies是Spring Boot的版本仲裁中心;以後我們導入依賴默認是不需要寫版本;(沒有在dependencies裡面管理的依賴自然需要聲明版本號)
更詳情的自己去看spring-boot-dependencies的pom文件2、啟動器
org.springframework.boot
spring-boot-starter-web
spring-boot-starter-web:spring-boot-starter:spring-boot場景啟動器;幫我們導入了web模塊正常運行所依賴的組件;
Spring Boot將所有的功能場景都抽取出來,做成一個個的starters(啟動器),只需要在項目裡面引入這些starter相關場景的所有依賴都會導入進來。要用什麼功能就導入什麼場景的啟動器。可以到官方文檔查看官方文檔
部分截圖,更多啟動器自己去看官方文檔。2、主程序類,主入口類(這裡自己最好點一下注解看一下源碼下面的代碼都是源碼截出來的)
/**
* @SpringBootApplication 來標註一個主程序類,說明這是一個Spring Boot應用
*/
@SpringBootApplication
publicclassHelloWorldMainApplication{
publicstaticvoidmain(String[]args) {
// Spring應用啟動起來
SpringApplication.run(HelloWorldMainApplication.class,args);
}
}
@SpringBootApplication: Spring Boot應用標註在某個類上說明這個類是SpringBoot的主配置類,SpringBoot就應該運行這個類的main方法來啟動SpringBoot應用;
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters={
@Filter(type=FilterType.CUSTOM,classes=TypeExcludeFilter.class),
@Filter(type=FilterType.CUSTOM,classes=AutoConfigurationExcludeFilter.class) })
public@interfaceSpringBootApplication{
.................
}@SpringBootConfiguration:Spring Boot的配置類;標註在某個類上,表示這是一個Spring Boot的配置類;
@Target()
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Configuration
public @interface SpringBootConfiguration {
}
@Configuration:配置類上來標註這個註解;配置類 ----- 配置文件;配置類也是容器中的一個組件;@Component@EnableAutoConfiguration:開啟自動配置功能;以前我們需要配置的東西,Spring Boot幫我們自動配置;@EnableAutoConfiguration告訴SpringBoot開啟自動配置功能;這樣自動配置才能生效;
@AutoConfigurationPackage
@Import(EnableAutoConfigurationImportSelector.class)
public@interfaceEnableAutoConfiguration{@AutoConfigurationPackage:自動配置包@Import(AutoConfigurationPackages.Registrar.class):Spring的底層註解@Import,給容器中導入一個組件;導入的組件由AutoConfigurationPackages.Registrar.class;將主配置類(@SpringBootApplication標註的類)的所在包及下面所有子包裡面的所有組件掃描到Spring容器;@Import(EnableAutoConfigurationImportSelector.class);給容器中導入組件?EnableAutoConfigurationImportSelector:導入哪些組件的選擇器;將所有需要導入的組件以全類名的方式返回;這些組件就會被添加到容器中;會給容器中導入非常多的自動配置類(xxxAutoConfiguration);就是給容器中導入這個場景需要的所有組件,並配置好這些組件;
有了自動配置類,免去了我們手動編寫配置注入功能組件等的工作;SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);Spring Boot在啟動的時候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動配置類導入到容器中,自動配置類就生效,幫我們進行自動配置工作;以前我們需要自己配置的東西,自動配置類都幫我們;
J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar;5、使用Spring Initializer快速創建Spring Boot項目IDEA:使用 Spring Initializer快速創建項目
IDE都支持使用Spring的項目創建嚮導快速創建一個Spring Boot項目;選擇我們需要的模塊;嚮導會聯網創建Spring Boot項目;默認生成的Spring Boot項目;
主程序已經生成好了,我們只需要我們自己的邏輯
resources文件夾中目錄結構
static:保存所有的靜態資源; js css images;
templates:保存所有的模板頁面;(Spring Boot默認jar包使用嵌入式的Tomcat,默認不支持JSP頁面);可以使用模板引擎(freemarker、thymeleaf);
application.properties:Spring Boot應用的配置文件;可以修改一些默認設置;
閱讀完有沒有發現這不只是入門,簡直就是入坑,趕緊動起自己手來跑一趟源碼。
TAG:java技術會所 |