javascript
SpringBoot之基础
簡介
背景
J2EE笨重的開發(fā) / 繁多的配置 / 低下的開發(fā)效率 / 復(fù)雜的部署流程 / 第三方技術(shù)集成難度大
特點
①?快速創(chuàng)建獨立運行的spring項目以及主流框架集成
②?使用嵌入式的Servlet容器,?應(yīng)用無需達成war包
③?starters自動依賴和版本控制
④?大量自動配置,?簡化開發(fā),?也可修改默認值
⑤?無需配置xml文件,?無代碼生成,?開箱即用
⑥?準生產(chǎn)環(huán)境的運行時應(yīng)用監(jiān)控
⑦?與云計算的天然集成
微服務(wù)
推薦martinfowler的一篇博客譯文: http://blog.cuicc.com/blog/2015/07/22/microservices/
微服務(wù)是一種架構(gòu)風(fēng)格,?一個應(yīng)用應(yīng)該是一組小型服務(wù),?可以通過http的方式進行互通.
以前的架構(gòu):?單體應(yīng)用(ALL IN ONE)
微服務(wù)(Microservices):?每一個服務(wù)都是可替代可升級的軟件單元
每個服務(wù)之間通過http進行通信:
準備工作
JDK1.8
maven3.3.9
IDEA_2018
配置指定maven的全局JDK版本:?在setting.xml文件中的<profiles></profiles>標簽中
<profile><id>jdk-1.8</id><activation><activeByDefault>true</activeByDefault><jdk>1.8</jdk></activation><properties><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target><maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion></properties></profile>第一個例子
①?創(chuàng)建一個maven工程(jar)
②?導(dǎo)入spring boot相關(guān)的依賴
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>com.idea.springboot</groupId><artifactId>spring-boot-01-helloworld</artifactId><packaging>jar</packaging><version>1.0-SNAPSHOT</version><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><java.version>1.8</java.version></properties><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><build><!--將應(yīng)用打包成一個可執(zhí)行的jar包--><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>?③ 編寫一個主程序, 啟動Spring Boot應(yīng)用
/*** @Date 18/12/06/006 - 8:54* @Desc springboot第一個例子* @SpringBootApplication 標注一個主程序類 說明這是一個Spring Boot應(yīng)用*/④?編寫相關(guān)的Controller
⑤?運行主程序測試,?訪問:?http://localhost:8080/hello
⑥?簡化部署(使用插件打成jar,?插件在pom文件中已給出)
探究
①?pom文件
? 父項目:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version><relativePath/> <!-- lookup parent from repository --></parent>再依賴父項目:
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>1.5.9.RELEASE</version><relativePath>../../spring-boot-dependencies</relativePath></parent>管理Spring?Boot的所有依賴版本:?導(dǎo)入依賴默認是不需要寫上版本的(沒有在dependencies管理中的除外)
?②?導(dǎo)入的依賴
<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency>spring-boot-starter:?Spring?Boot的場景啟動器
spring-boot-starter-web:?幫我們導(dǎo)入了web模塊正常運行所依賴的組件
Spring?Boot將所有的功能場景都抽取出來,?做成一個個的starter(啟動器),?只需要在項目中引入這些starter,?要用哪個功能就導(dǎo)入具體的starter即可.
③?主程序類/主入口類
@SpringBootApplication注解,?該注解所標準的類即為SpringBoot的主配置類
? ? @SpringBootConfiguration
? ? ? ? @Configuration:?配置類上的注解
? ? ? ? ? ? @Component:?組件注解
? ? ? ? ? ? ? ? 配置類:?同配置文件的作用, 也是容器的組件.
? ? @EbableAutoConfiguration:?開啟自動注解功能
? ? ? ? @AutoConfigurationPackage:?自動配置包(自動導(dǎo)包)
? ? ? ? ? ? @Import({Registrar.class}):?Spring的底層注解,?給容器中導(dǎo)入一個組件
? ? ? ? 將主配置類(@SpringBootApplication標注的類)的所在包及下面所有子包的所有組件都掃描到容器中
? ? ? ? @Import({ AutoConfigurationImportSelector.class}):?導(dǎo)入具體組件的選擇器
? ? ? ? 將所有需要導(dǎo)入的組件以全類名的方式返回,?這些組件就會被添加到容器中.
? ? ? ? 會給容器中導(dǎo)入非常多的自動配置類(xxxAutoConfiguration):?給容器中導(dǎo)入這個場景需要組件并配置好這些組件.
? ? ? ? 有了自動配置類,?免去了手動編寫配置注入功能組件的工作.
? ??SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class, ClassLoader);
? ? ? ? 該方法從文件"META-INF/spring.factories"中獲取自動配置的類信息.
小結(jié):?SpringBoot在啟動時從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,?將這些值作為自動配置類導(dǎo)入到容器中,?自動配置類就會生效,?進行自動配置工作,?所以并不是不需要進行以前的配置,?只是這些配置都由SpringBoot幫我們完成了. J2EE的整體整合解決方案和自動配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar
使用Spring?Initializr快速創(chuàng)建SpringBoot項目(需要聯(lián)網(wǎng))
①?選擇Spring?Initializr
②?填寫信息
③?需要哪個模塊勾選哪個即可
④?next->finish
⑤?resources文件夾中的目錄結(jié)構(gòu)
? ? static文件夾:?保存所有的靜態(tài)資源(js,?css...);
? ? templates文件夾:?保存所有的模板頁面(由于SpringBoot使用嵌入式的tomcat,?所以默認不支持jsp),?可以使用模板引擎? ? ? ? ? ? ? ? ? ? (freemarker/ thymeleaf)
? ? application.properties:?SpringBoot應(yīng)用的配置文件(可以修改一些默認的設(shè)置)
轉(zhuǎn)載于:https://www.cnblogs.com/MilkyWayGalaxy/p/10088817.html
總結(jié)
以上是生活随笔為你收集整理的SpringBoot之基础的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 中银神偷奶爸系列信用卡白金卡额度多少?提
- 下一篇: SpringBoot项目遇到的一些问题