SpringBoot基礎篇(一):Spring Boot入門

我們今天開始對SpringBoot的學習,本篇主要是Spring Boot的入門部分。

1、SpringBoot簡介

引用SpringBoot在百度百科中的含義:

Spring Boot是由Pivotal團隊提供的全新框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。通過這種方式,Spring Boot致力于在蓬勃發展的快速應用開發領域(rapid application development)成為領導者。

在學習之前我們可以先列出Spring Boot的優點,以供了解,其相關內容會在未來進行講解。

  • 快速創建獨立運行的Spring項目以及與主流框架集成
  • 使用嵌入式的Servlet容器,應用無需打成WAR包
  • starters自動依賴與版本控制
  • 大量的自動配置,簡化開發,也可修改默認值
  • 無需配置XML,無代碼生成,開箱即用
  • 準生產環境的運行時應用監控
  • 與云計算的天然集成

2、微服務

了解微服務以前,我們可以相對的了解一下單體應用,什么是單體應用呢?
在這里插入圖片描述
在單體應用的年代,一個軟件應用,往往會將應用所有功能都開發和打包在一起,如圖所示,這里將代碼打成war包放置在Tomcat服務器上。但是,當用戶訪問量變大導致一臺服務器無法支撐時怎么辦呢?于是出現了負載均衡,后來又把靜態文件分離出來形成了動靜分離。但是呢所謂治標不治本,無論是負載均衡也好,動靜分離也罷,都是改善和優化了部署環境,改變不了根本的缺點:

  • 代碼臃腫,應用啟動時間長;(代碼超過1G的項目都有!)
  • 回歸測試周期長,修復一個小小bug可能都需要對所有關鍵業務進行回歸測試;
  • 應用容錯性差,某個小小功能的程序錯誤可能導致整個系統宕機;
  • 伸縮困難,單體應用擴展性能時只能整個應用進行擴展,造成計算資源浪費;
  • 開發協作困難,一個大型應用系統,可能幾十個甚至上百個開發人員,大家都在維護一套代碼的話,代碼merge復雜度急劇增加。

所以在這種情況下我們今天的主角——“微服務”就應運而生了,我們先來看一下典型的微服務架構:
在這里插入圖片描述
根據上圖的內容即可以很容易理解微服務架構的大體流程,客戶端調用不同的服務時會先經過服務網關來進行調用,而對服務的修改與上傳又可以通過服務注冊中心和服務配置中心來完成。

3、SpringBoot———HelloWorld

3.1、設計目標

3.2、創建一個Maven工程,在Maven中導入依賴Jar包

  <parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</version><relativePath/></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId><version>2.1.12.RELEASE</version></dependency></dependencies>

3.3、編寫一個SpringBoot主程序、啟動應用

package com.lizhengi;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;/*** springBootApplication:標注一個主程序類,表示這個是一個Springboot應用*/@SpringBootApplication
public class HelloWorldApplication {public static void main(String[] args) {//Spring應用啟動SpringApplication.run(HelloWorldApplication.class, args);}
}

3.4、編寫一個Controller

package com.lizhengi.controller;import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;/*** RestController:是spring4里的注解,是@ResponseBody和@Controller的縮寫。*/@RestController
public class HelloController {@RequestMapping("/hello")public String hello(){return "hello SpringBoot,this is my first Application";}
}

3.5、運行main方法、查看瀏覽器
在這里插入圖片描述

到這里我們的第一個SpringBoot程序HelloWorld程序就完成了。

3.6、簡化部署
3.6.1、添加maven插件

 <!-- 這個插件,可以將應用打包成一個可執行的jar包;--><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

3.6.2、使用mvn package進行打包
在這里插入圖片描述

3.6.3、進入打包好的jar包所在目錄找到jar包
在這里插入圖片描述

3.6.4、使用 java -jar jar包名稱 運行
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/535907.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/535907.shtml
英文地址,請注明出處:http://en.pswp.cn/news/535907.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

SpringBoot基礎篇(二):HelloWorld細節探究

1、場景啟動器 1.1依賴 <!--Hello World項目的父工程是org.springframework.boot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.1.RELEASE</versio…

MIP 與 AMP 合作進展(3月7日)

“到目前為止&#xff0c;全網通過 MIP 校驗的網頁已超10億。除了代碼和緩存&#xff0c; MIP 還想做更多來改善用戶體驗移動頁面。” 3月7日&#xff0c;MIP 項目負責人在首次 AMP CONF 上發言。 那么 MIP 和 AMP 的關系是什么呢&#xff1f; AMP 是一個開源性項目&#xff…

SpringBoot番外篇(一):使用Spring Initializer快速創建Spring Boot項目(IDEA版)

IDE都支持使用Spring的項目創建向導快速創建一個Spring Boot項目&#xff1b; 選擇我們需要的模塊&#xff1b;向導會聯網創建Spring Boot項目&#xff1b; ps:需要聯網 1、創建新項目時選擇Spring Initializ&#xff0c;選擇好java版本&#xff0c;點擊next。r 2、填寫項…

開發教程(四) MIP組件平臺使用說明

組件審核平臺用于上傳 MIP 組件。經過自動校驗之后&#xff0c;提交審核&#xff0c;通過審核的組件會定時推送到線上&#xff0c;供網站使用。 平臺地址&#xff1a;https://www.mipengine.org/platform/ 1. 使用說明 MIP 組件審核平臺用于提交開發完成的組件&#xff0c;如…

MIP 技術交流分享(3月15日)

3月15日下午&#xff0c;MIP 團隊工程師與58趕集的 Web 前端工程師進行了一次面對面的技術交流。 在這次交流中&#xff0c;MIP 工程師主要分享了 MIP 技術原理&#xff0c;MIP 加速原理&#xff0c;以及 MIP 為開發者提供的工具集。 58趕集的工程師提出了以下問題&#xff1a…

Redis(零):背景

什么是NoSQL&#xff0c;什么是Redis&#xff0c;我們在了解這個系列之前&#xff0c;先來看一下Redis是從何而來&#xff1f;Why redis is needed? 1、單機MySQL年代 在最早的單機MySQL年代&#xff0c;存在著訪問量小&#xff0c;單個數據庫等特點。 但是特有著眾多的缺…

Redis(一):什么是NoSQL與NoSQL分類

1、什么是NoSQL NoSQL Not only SQL (不僅是SQL)&#xff0c;即泛指非關系型數據庫。隨著Web2.0時代誕生&#xff01;NoSQL在當今大數據的環境下發展十分迅速&#xff01; NoSQL 是一項全新的數據庫革命性運動&#xff0c;早期就有人提出&#xff0c;發展至2009年趨勢越發高漲…

MIP 內容聲明

從搜索結果頁點出的 MIP 頁面&#xff0c;其頁面上的任何內容&#xff08;包括但不限于廣告、在線咨詢、統計等組件&#xff09;均視為在原站點上的投放和使用。 MIP &#xff08;Mobile Instant Pages - 移動網頁加速器&#xff09;, 是一套應用于移動網頁的開放性技術標準。…

Redis(二):Redis入門與性能測試

1、Redis概述 Redis是什么&#xff1a; Redis&#xff08;Remote Dictionary Server )&#xff0c;即遠程字典服務&#xff0c;是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫&#xff0c;并提供多種語言的API。 免費開源&#xf…

互聯網的發展背離了其初衷嗎?

作者 | 高磊 編輯 | 尾尾 一、互聯網初衷究竟是什么&#xff1f; 互聯網的初衷究竟是什么&#xff1f; 對于這個問題&#xff0c;被譽為“互聯網之父”的蒂姆伯納斯李&#xff08;Tim Berners-Lee&#xff09;應該最有發言權。 伯納斯李認為&#xff0c;互聯網最具價值的地…

Redis(三):Redis基礎知識與常用命令

1、基礎命令 Redis默認有16個數據庫&#xff0c;用的是第0個數據庫&#xff0c;可以使用select進行切換數據庫&#xff0c;使用DBSIZE查看DB大小&#xff08;只針對當前數據庫&#xff09;。 使用keys * 查看當前數據庫下所有的key&#xff0c;使用flushdb清除當前數據庫&am…

移動Web加速技術月報第1期

作者 | Brilliant Open Web團隊breezet、JennyL 編輯 | 尾尾 為推進Web技術的發展&#xff0c;Brilliant Open Web 團隊特推出每月一期的《移動Web加速技術月報》&#xff0c;該月報將整理較流行的移動Web加速技術&#xff0c;并跟進各項技術的進展和發展方向&#xff0c;以期…

Redis(四):String字符串數據類型詳解

Redis 字符串數據類型的相關命令用于管理 redis 字符串值&#xff0c;基本語法如下&#xff1a; redis 127.0.0.1:6379> COMMAND KEY_NAME1、String類型的常用命令 1.1、set、get SET key v//設置key值為v get key //獲取key值1.2、Append APPEND key "hi" //…

五個案例簡述Web設計原則:通用一致

作者 | 百度搜索用戶體驗中心 《Web設計指南》分為設計原則、基礎規范兩方面主要內容&#xff0c;同時會提供相應的實際案例及資源下載。歡迎關注OpenWeb開發者&#xff0c;訂閱《Web設計指南》。 前言 《Web設計指南》是專門為廣大Web內容生態提供一套簡單實用的設計指南&a…

Redis(五):List集合數據類型詳解

Redis列表是簡單的字符串列表&#xff0c;按照插入順序排序。你可以添加一個元素到列表的頭部&#xff08;左邊&#xff09;或者尾部&#xff08;右邊&#xff09; 一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。 實例&#xff1a; redis 127…

WebP 在減少圖片體積和流量上的效果如何?WebP 技術實踐分享

作者 | Jackson 編輯 | 尾尾 不論是 PC 還是移動端&#xff0c;圖片一直占據著頁面流量的大頭&#xff0c;在圖片的大小和質量之間如何權衡&#xff0c;成為了長期困擾開發者們的問題。而 WebP技術的出現&#xff0c;為解決該問題提供了好的方案。本文將為大家詳細介紹 WebP 技…

Redis(六):Set集合數據類型詳解

Redis 的 Set 是 String 類型的無序集合。集合成員是唯一的&#xff0c;這就意味著集合中不能出現重復的數據。 Redis 中集合是通過哈希表實現的&#xff0c;所以添加&#xff0c;刪除&#xff0c;查找的復雜度都是 O(1)。 集合中最大的成員數為 232 - 1 (4294967295, 每個集…

百度主任架構師譚待:如何讓不帶團隊的程序員負責重大項目?

演講 | 譚待 整理 | 趙新龍、尾尾 譚待&#xff0c;百度主任架構師、百度搜索公司技術委員會聯席主席。主要研究領域在分布式系統和搜索引擎&#xff0c;是百度BVC代理計算和Matrix私有云的主要設計者&#xff0c;兩獲百度最高獎。主持設計了百度新一代搜索架構&#xff0c;在…

Redis(七):Hash哈希數據類型詳解

Redis hash 是一個 string 類型的 field 和 value 的映射表&#xff0c;hash 特別適合用于存儲對象。 Redis 中每個 hash 可以存儲 232 - 1 鍵值對&#xff08;40多億&#xff09;。 實例&#xff1a; 127.0.0.1:6379> HMSET runoobkey name "redis tutorial"…

Chrome Dev Summit 2017參會筆記

作者 | 高磊 編輯 | 尾尾 為期兩天的 Chrome Dev Summit 2017 于 10月23日~24日在美國舊金山舉辦。由于我們近期和Google的合作較多&#xff0c;對Google的動作也比較關注&#xff0c;所以受邀參加了這次的Chrome Dev Summit &#xff08;CDS&#xff09;。本文是我在現場做的…