摘要:使用嵌入式容器,應(yīng)用無需達(dá)成包。自動依賴與版本控制。準(zhǔn)生產(chǎn)環(huán)境的運行時應(yīng)用監(jiān)控。告訴開啟自動配置功能,這樣自動配置才能生效。其組成為為的底層注解,表明給容器中導(dǎo)入一個組件,導(dǎo)入的組建由類提供。
Spring Boot——入門
spring boot簡化了spring的開發(fā),是J2EE一站式解決方案。
Spring Boot 的優(yōu)缺點 優(yōu)點快速創(chuàng)建獨立運行的服務(wù),與主流框架集成。
使用嵌入式Serverlet容器,應(yīng)用無需達(dá)成war包。
starters自動依賴與版本控制。
大量的自動配置,簡化開發(fā),支持自定義配置。
無需xml配置,開箱即用。
準(zhǔn)生產(chǎn)環(huán)境的運行時應(yīng)用監(jiān)控。
云計算的天然集成。
缺點入門容易,精通難;因為很多事情是spring boot自動完成的。
微服務(wù)martin flow 《Microservices》
martin flow 《微服務(wù)》中文翻譯
實例講解 Hello Worldmain函數(shù)所在的HelloWorld類
/** * @SpringBootApplication 用來告訴程序這是一個 spring boot 應(yīng)用 */ @SpringBootApplication public class Helloworld { public static void main(String[] args) { // 啟動Spring應(yīng)用 SpringApplication.run(Helloworld.class, args); } }
controller類
@Controller public class HelloController { @ResponseBody @RequestMapping("/hello") public String hello(){ return "Hello world"; } }Pom文件
Spring Boot 主程序分析org.springframework.boot spring-boot-starter-parent 2.1.3.RELEASE org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-maven-plugin
/** * @SpringBootApplication 用來告訴程序這是一個 spring boot 應(yīng)用 */ @SpringBootApplication public class Helloworld { public static void main(String[] args) { // 啟動Spring應(yīng)用 SpringApplication.run(Helloworld.class, args); } }
@SpringBootApplication 注解標(biāo)注在某個類上的時候,說明這個類是SpringBoot的主配置類,SpringBoot就應(yīng)該運行這個類的main方法來啟動SpringBoot應(yīng)用。該注解為組合注解,由以下注解組成:
// 指定該注解可以給一個類型進行注解,比如類、接口、枚舉 @Target(ElementType.TYPE) // 注解可以保留到程序運行的時候,它會被加載進入到 JVM 中,所以在程序運行時可以獲取到它們。 @Retention(RetentionPolicy.RUNTIME) // 它的作用是能夠?qū)⒆⒔庵械脑匕?Javadoc 中去。 @Documented // 如果一個超類被 @Inherited 注解過的注解進行注解的話,那么如果它的子類沒有被任何注解應(yīng)用的話,那么這個子類就繼承了超類的注解。 @Inherited // 表明這個類是一個SpringBoot的配置類 @SpringBootConfiguration // 告訴SpringBoot開啟自動配置功能,自動配置才會生效 @EnableAutoConfiguration @ComponentScan(excludeFilters = { @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class), @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) }) public @interface SpringBootApplication {}
@SpringBootConfiguration 標(biāo)記在某個類上時,表明這個類是一個SpringBoot的配置類。其組成為:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Configuration public @interface SpringBootConfiguration {}
? 其中,@Configuration注解是Spring框架中基本的一個注解,在配置類上標(biāo)記該注解,表明這個類是Spring的配置類。
@EnableAutoConfiguration告訴SpringBoot開啟自動配置功能,這樣自動配置才能生效。其組成為:
@Target(ElementType.TYPE) @Retention(RetentionPolicy.RUNTIME) @Documented @Inherited @AutoConfigurationPackage @Import(AutoConfigurationImportSelector.class) public @interface EnableAutoConfiguration {}
? 其中 @AutoConfigurationPackage自動配置包,將主配置類(即@SpringBootApplication標(biāo)注的類)所在包及其下面所有子包里面的所有組件掃描到Spring容器中。其組成為:
@Import(AutoConfigurationPackages.Registrar.class) public @interface AutoConfigurationPackage {}
? @Import為Spring的底層注解,表明給容器中導(dǎo)入一個組件,導(dǎo)入的組建由AutoConfigurationPackages.Registrar類提供。
? @Import(AutoConfigurationImportSelector.class) 表明開啟自動導(dǎo)入哪些組建的選擇器;
? AutoConfigurationImportSelector.class將要導(dǎo)入的組件以全類名的方式返回,這些容器會被導(dǎo)入到Spring容器。會給容器中導(dǎo)入非常多的自動配置類(一般以xxxAutoConfiguration結(jié)尾)。這些自動配置類的作用就是給容器中導(dǎo)入場景所需的自動配置,有了自動配置類,就可以不用手動寫配置了
自動配置類是怎么找到的呢?
AutoConfigurationImportSelector - selectImports(AnnotationMetadata annotationMetadata) - Listconfigurations = getCandidateConfigurations(annotationMetadata, attributes); // 返回所有配置,對應(yīng)上面的圖 - List configurations = SpringFactoriesLoader.loadFactoryNames( getSpringFactoriesLoaderFactoryClass(), getBeanClassLoader()); - protected Class> getSpringFactoriesLoaderFactoryClass() { return EnableAutoConfiguration.class; } - String ENABLED_OVERRIDE_PROPERTY = "spring.boot.enableautoconfiguration"; - Enumeration urls = classLoader != null ? classLoader.getResources("META-INF/spring.factories") : ClassLoader.getSystemResources("META-INF/spring.factories");
從類路徑下(如引用的各個jar包)的 META-INF/spring.factories中獲取 EnableAutoConfiguration制定的值(自動配置類),這些值作為自動配置類導(dǎo)入到容器中,自動配置類就生效了,幫我們進行自動配置工作。以前我們需要自己配置的類,spring boot都自動配置了:
spring-boot-autoconfigure包中,包含了J2EE 所有整合方案和所有自動配置。
orgspringframeworkootspring-boot-autoconfigure1.5.9.RELEASEspring-boot-autoconfigure-1.5.9.RELEASE.jar!orgspringframeworkootautoconfigure使用Spring Initializer快速創(chuàng)建Spring Boot項目
首先,需要在IDEA中安裝 Spring Assisstant插件。
選擇需要的模塊,IDEA會自動聯(lián)網(wǎng)下載Spring boot 應(yīng)用模板:
resources 文件夾中目錄結(jié)構(gòu):
static:保存所有靜態(tài)資源,如js、css、images;
templates:保存所有的模板頁面;(Spring Boot默認(rèn)jar包使用嵌入式的Tomcat,默認(rèn)不支持jsp頁面);可以使用模板引擎(freemarker,thymeleaf);
application.properties:Spring Boot 應(yīng)用的配置文件,可以修改一些默認(rèn)設(shè)置,如服務(wù)的端口號。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/74590.html
摘要:一概括,如果使用開發(fā)一個的應(yīng)用創(chuàng)建一個項目并且導(dǎo)入相關(guān)包。創(chuàng)建一個編寫一個控制類需要一個部署應(yīng)用的服務(wù)器如,特點設(shè)計目的是用來簡化新應(yīng)用的初始搭建以及開發(fā)過程。啟動器可以和位于同一個包下,或者位于的上一級包中,但是不能放到的平級以及子包下。 一,Spring Boot 介紹 Spring Boot不是一個新的框架,默認(rèn)配置了多種框架使用方式,使用SpringBoot很容易創(chuàng)建一個獨立運...
摘要:第二個類級別注解是。將引導(dǎo)應(yīng)用程序,啟動,從而啟動自動配置服務(wù)器。比如想使用不同版本的,具體如下在標(biāo)簽中還可以指定編譯的版本和項目的編碼格式指定項目編碼為使用插件可以為項目提供的操作方式,的個,默認(rèn)。 引言 Spring 框架對于很多 Java 開發(fā)人員來說都不陌生。Spring 框架包含幾十個不同的子項目,涵蓋應(yīng)用開發(fā)的不同方面。如此多的子項目和組件,一方面方便了開發(fā)人員的使用,另外...
摘要:簡介本系列基于的官方文檔,除去了文檔中一些冗余的東西,加上了一些自己的理解,意圖是在于幫助更多初識的人來進行一次探險。本系列建議具有基礎(chǔ)和使用經(jīng)驗的同學(xué)學(xué)習(xí)。至此,一個程序就編寫完畢了。 簡介 本系列基于Spring Boot 2.x 的官方文檔,除去了文檔中一些冗余的東西,加上了一些自己的理解,意圖是在于幫助更多初識Spring Boot的人來進行一次探險。 本系列建議具有Java基...
摘要:前言以前總是利用創(chuàng)建工程來使用只知其然不知其所以然今天從搭建一個基于的的項目創(chuàng)建工程與安裝依賴?yán)没虻葎?chuàng)建一個工程一路即可此時的目錄結(jié)構(gòu)如下修改安裝首先在中加入繼承的主程序和一些依賴然后的加入程序依賴使成為項目框架主程序 前言 以前總是利用start.spring.io創(chuàng)建spring-boot工程來使用 ,只知其然不知其所以然 今天從0搭建一個基于mvnen的spring-boot...
摘要:關(guān)于的自動配置,這個是重點之一,后面細(xì)說。在后續(xù)的學(xué)習(xí)中會慢慢學(xué)習(xí)到。紅色標(biāo)記的就是已經(jīng)掃描到了并初始化成功了。 以下內(nèi)容,如有問題,煩請指出,謝謝 springboot出來也很久了,以前零散地學(xué)習(xí)了不少,不過很長時間了都沒有在實際中使用過了,忘了不少,因此要最近準(zhǔn)備抽時間系統(tǒng)的學(xué)習(xí)積累下springboot,給自己留個根。 因為以前學(xué)過一些,這里就主要根據(jù)官方文檔來學(xué)習(xí)了,可能會根據(jù)...
閱讀 3434·2021-11-08 13:20
閱讀 3359·2021-09-30 09:48
閱讀 2560·2021-09-29 09:41
閱讀 589·2021-09-22 15:04
閱讀 2458·2021-08-23 09:44
閱讀 3663·2020-12-03 17:26
閱讀 1007·2019-08-30 14:10
閱讀 1561·2019-08-29 18:34