首頁 > Java > java教程 > 主體

springboot熱部署的兩種方式是什麼

王林
發布: 2023-06-03 11:51:27
轉載
683 人瀏覽過

springboot和springmvc的區別

spring boot 內嵌tomcat,Jetty和Undertow容器,可以直接運作起來,不在再做部署;

spring boot 自動配置,減少了xml檔案的大量配置;降低了專案建置的複雜度

Spring MVC是基於Servlet 的一個MVC 框架主要解決WEB 開發的問題,因為Spring 的配置非常複雜,各種XML、 JavaConfig、hin處理起來比較繁瑣。於是為了簡化開發者的使用,從而創造性地推出了Spring boot,約定優於配置,簡化了spring的配置流程。

Spring 是一個「引擎」;

Spring MVC 是基於Spring的一個MVC 框架;

Spring Boot 是基於Spring4的條件註冊的一套快速開發整合包。

springboot熱部署的兩種方式

SpringBoot 1.3後才擁有SpringBoot devtools熱部署

①:spring-boot-devtools ②:Spring Loaded

方式一:

在專案的pom檔案中新增依賴:

 <!--热部署jar-->
 <dependency>
 <groupId>org.springframework.boot</groupId>
 <artifactId>spring-boot-devtools</artifactId>
 </dependency>
登入後複製

然後:使用shift ctrl alt "/" (IDEA中的快速鍵) 選擇" Registry" 然後勾選compiler.automake.allow.when.app.running

方式二:

在專案中加入以下程式碼

 <build>
 <plugins>
  <plugin>
  <!-- springBoot编译插件-->
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-maven-plugin</artifactId>
  <dependencies>
   <!-- spring热部署 -->
   <!-- 该依赖在此处下载不下来,可以放置在build标签外部下载完成后再粘贴进plugin中 -->
   <dependency>
   <groupId>org.springframework</groupId>
   <artifactId>springloaded</artifactId>
   <version>1.2.6.RELEASE</version>
   </dependency>
  </dependencies>
  </plugin>
 </plugins>
 </build>
登入後複製

新增完畢後需要使用mvn指令執行:

先找到IDEA中的Edit configurations ,然後進行如下操作:(點選左上角的" ",然後選擇maven將出現右側面板,在紅色劃線部位輸入如圖所示指令,你可以為該指令命名(此處命名為MvnSpringBootRun))

點擊儲存將會在IDEA專案運行部位出現,點擊綠色箭頭運行即可

springboot設定文件

spring boot使用一個全域設定檔:主要是下列兩種型別

application.properties :範例:server.port=9998

application.yml(YAML) :範例:server:

               port:8080##      port:8080##「」設定檔的主要設定檔#poot#p

#Spring Boot 的核心註解

啟動類別上面的註解是@SpringBootApplication,它也是Spring Boot 的核心註解,主要組合包含了以下3 個註解:

@SpringBootConfiguration:組合了@Configuration 註解,實現設定檔的功能。

@EnableAutoConfiguration:開啟自動設定的功能,也可以關閉某個自動設定的選項,如關閉資料來源自動設定功能: @SpringBootApplication(exclude = { DataSourceAutoConfiguration.class })。

@ComponentScan:Spring元件掃描。


spring boot的starter的執行原理

利用starter實現自動化配置只需要兩個條件-maven依賴、配置文件,這裡簡單介紹下starter實現自動化配置的流程。 引入maven實質上就是導入jar包,spring-boot啟動的時候會找到starter jar包中的resources/META-INF/spring.factories文件,根據spring.factories文件中的配置,找到需要自動配置的類別


Spring Boot與Spring MVC的區別

#Spring Boot是Spring和Spring MVC的整合,而Spring MVC只是Spring的一個模組,一個輕量級的Web層框架
  1. Spring Boot幾乎可以實現零配置,所有功能使用註解進行開發,運用了'約定大於配置'的思想,簡化了專案開發
  2. 難度,而Spring MVC需要依賴xml配置進行開發
  3. Spring Boot自帶內建的tomcat,使得打包成jar包後可以直接運行,也可以選擇使用外部的tomcat
  4. Spring Boot也繼承了許多第三方函式庫配置,例如,JDBC, Mongo, Redis等,應用這些第三方函式庫,幾乎可以零配置
  5. springcloud的服務註冊和發現是怎樣的原理

Eureka包含兩個元件:Eureka Server和Eureka Client

Eureka Server提供服務註冊服務

各個節點啟動後,會在EurekaServer中進行註冊,這樣EurekaServer中的服務註冊表中將會儲存所有可用服務節點的訊息,服務節點的資訊可以在介面中直觀的看到

EurekaClient是一個Java客戶端,用於簡化Eureka Server的交互,客戶端同時也具備一個內建的、使用輪詢(round- robin)負載演算法的負載平衡器。在應用程式啟動後,將會向Eureka Server發送心跳(預設週期為30秒)。如果Eureka Server在多個心跳週期內沒有接收到某個節點的心跳,EurekaServer將會從服務登錄中移除這個服務節點(預設90秒)

Eureka三大角色:

Eureka Server 提供服務註冊和發現
  • Service Provider服務提供者將自身服務註冊到Eureka,從而使服務消費者能夠找到
  • Service Consumer服務消費者從Eureka取得註冊服務列表,以便能夠消費服務

作為服務註冊中心,Eureka 和Zookeeper對比的優點:

著名的CAP理論指出,一個分散式系統不可能同時滿足C(一致性)、 A(可用性)和P(分區容錯性)。由於分區容錯性P在是分散式系統中必須要保證的,因此我們只能在A和C之間進行權衡。

因此

  • Zookeeper保證的是CP,

  • Eureka則是AP

mybatis中的#與$的區別

##相當於對資料加上雙引號,$相當於直接顯示資料

  • #傳進來的資料會被視為字串,並加上雙引號。如:order by #user_id#,如果傳入的值是111,那麼解析成sql時的值為order by "111", 如果傳入的值是id,則解析成的sql為order by "id".

  • $將傳入的資料直接顯示產生在sql中。如:order by $user_id$,如果傳入的值是111,那麼解析成sql時的值為order by user_id, 如果傳入的值是id,則解析成的sql為order by id. 

  • 3#方式能夠很大程度上防止sql注入。  

  • $方式無法防止Sql注入。

  • $方式一般用於傳入資料庫對象,例如傳入表名.  

  • 一般能用#的就別用$.

MyBatis排序時使用order by 動態參數時需要注意,用$而不是

#字串取代

預設情況下,使用#{}格式的語法會導致MyBatis建立預處理語句屬性並以它為背景設定安全的值(例如?)。這樣做很安全,很迅速也是首選做法,有時你只想直接在SQL語句中插入一個不改變的字串。例如,像ORDER BY,你可以這樣來使用:
ORDER BY ${columnName}

這裡MyBatis不會修改或轉義字串。

Redis怎麼淘汰資料

  1. volatile-lru :從已設定過期時間的資料集(server.db[i].expires)中挑選最近最少使用的資料淘汰

  2. volatile-ttl:從已設定過期時間的資料集(server.db[i].expires)中挑選將要過期的資料淘汰

  3. volatile-random:從已設定過期時間的資料集(server.db[i].expires)中隨機挑選資料淘汰

  4. allkeys-lru:從資料集(server.db[i].dict)中挑選最近最少使用的資料淘汰

  5. allkeys-random:從資料集(server.db[i ].dict)中隨機挑選資料淘汰

  6. no-envivtion(驅逐):禁止驅逐資料

LRU機制:

redis保存了lru計數器server.lrulock,會定時的去更新(redis定時程式severCorn()),每個redis物件都會設定對應的lru值,每次存取物件的時候,redis都會更新redisObject.lru。

LRU淘汰機制:在資料集中隨機挑選幾個鍵值對,取出其中lru最大的鍵值對淘汰。所以,redis並不能保證淘汰的資料都是最近最少使用的,而是隨機挑選的鍵值對中的。

TTL機制:

redis資料集結構中保存了鍵值對過期時間表,即 redisDb.expires。

TTL淘汰機制:在資料集中隨機挑選幾個鍵值對,取出其中最接近過期時間的鍵值對淘汰。所以,redis並不能保證淘汰的資料都是最接近過期時間的,而是隨機挑選的鍵值對中的。

redis在每服務客戶端執行一個指令的時候,會偵測使用的記憶體是否超額

以上是springboot熱部署的兩種方式是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:yisu.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
最新問題
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!