日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

SpringBoot之基础

發(fā)布時間:2023/12/13 javascript 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SpringBoot之基础 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

簡介

背景

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)用*/ @SpringBootApplication public class HelloWorldMainApplication { public static void main(String[] args) { //spring應(yīng)用啟動起來 SpringApplication.run(HelloWorldMainApplication.class, args); } }

④?編寫相關(guān)的Controller

@Controller public class HelloController { @ResponseBody @RequestMapping("/hello") public String hello(){ return "Hello World!"; } }

⑤?運行主程序測試,?訪問:?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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。