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