欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Spring Boot 與微服務(wù)入門(mén)實(shí)戰(zhàn)詳細(xì)總結(jié)

 更新時(shí)間:2025年07月21日 11:04:35   作者:越來(lái)越無(wú)動(dòng)于衷  
本文講解SpringBoot框架的核心特性如快速構(gòu)建、自動(dòng)配置、零XML與微服務(wù)架構(gòu)的定義、演進(jìn)及優(yōu)缺點(diǎn),涵蓋開(kāi)發(fā)環(huán)境準(zhǔn)備和HelloWorld實(shí)戰(zhàn),強(qiáng)調(diào)其在簡(jiǎn)化開(kāi)發(fā)流程、支持分布式系統(tǒng)及云原生部署方面的優(yōu)勢(shì),本文給大家介紹Spring Boot 與微服務(wù)詳細(xì)總結(jié),感興趣的朋友一起看看吧

一、Spring Boot 核心概述

Spring Boot 是簡(jiǎn)化 Spring 應(yīng)用開(kāi)發(fā)的框架,作為 Spring 技術(shù)棧的整合方案和 J2EE 開(kāi)發(fā)的一站式解決方案,其核心優(yōu)勢(shì)體現(xiàn)在:

  • 快速創(chuàng)建獨(dú)立運(yùn)行的 Spring 項(xiàng)目,輕松集成主流框架
  • 內(nèi)置 Servlet 容器(如 Tomcat),無(wú)需打包為 war 包即可部署
  • 提供 starters 機(jī)制,實(shí)現(xiàn)自動(dòng)依賴管理與版本控制,減少版本沖突問(wèn)題
  • 大量自動(dòng)裝配功能簡(jiǎn)化開(kāi)發(fā)流程,同時(shí)支持自定義默認(rèn)配置
  • 零 XML 配置、無(wú)代碼生成,真正實(shí)現(xiàn)開(kāi)箱即用
  • 內(nèi)置準(zhǔn)生產(chǎn)環(huán)境的運(yùn)行時(shí)監(jiān)控功能,便于項(xiàng)目運(yùn)維
  • 與云計(jì)算天然適配,滿足現(xiàn)代部署需求

二、微服務(wù)架構(gòu)詳解

1. 微服務(wù)的定義與演進(jìn)

2014 年,Martin Fowler 提出微服務(wù)架構(gòu)理念(參考文檔:Microservices Guide)。從技術(shù)演進(jìn)路徑看,架構(gòu)風(fēng)格經(jīng)歷了:Servlet → SSH → SSM → 單體應(yīng)用 → SOA → Spring Cloud 的發(fā)展過(guò)程。

微服務(wù)的核心定義為:一種將應(yīng)用拆分為多個(gè)小型、獨(dú)立業(yè)務(wù)服務(wù)的架構(gòu)風(fēng)格。每個(gè)服務(wù)具備獨(dú)立處理邏輯和輕量通訊機(jī)制,可部署在單個(gè)或多個(gè)服務(wù)器上,是松耦合、具有有界上下文的面向服務(wù)架構(gòu)。

  • 單體應(yīng)用:所有功能模塊集中在一個(gè)應(yīng)用中(ALL IN ONE)
  • 微服務(wù):每個(gè)功能元素都是可獨(dú)立替換和升級(jí)的軟件單元,通過(guò) HTTP 等協(xié)議實(shí)現(xiàn)服務(wù)間通信

2. 微服務(wù)的優(yōu)缺點(diǎn)

優(yōu)勢(shì)缺點(diǎn)
聚焦單一業(yè)務(wù)功能,服務(wù)體積小巧分布式系統(tǒng)操作復(fù)雜,運(yùn)維成本高
支持 2-5 人小團(tuán)隊(duì)獨(dú)立開(kāi)發(fā)可能存在重復(fù)開(kāi)發(fā)工作
松耦合設(shè)計(jì),開(kāi)發(fā)與部署獨(dú)立問(wèn)題跟蹤困難,排查成本高
支持多語(yǔ)言開(kāi)發(fā)服務(wù)數(shù)量增加后,管理復(fù)雜度指數(shù)上升
易于集成自動(dòng)化部署和持續(xù)集成-
便于理解、修改和維護(hù)-
可按需擴(kuò)展,資源利用更高效-
支持中低端服務(wù)器部署-
易于與第三方系統(tǒng)集成-
數(shù)據(jù)存儲(chǔ)靈活(獨(dú)立數(shù)據(jù)庫(kù)或統(tǒng)一數(shù)據(jù)庫(kù))-

三、Spring Boot 開(kāi)發(fā)環(huán)境準(zhǔn)備

1. 環(huán)境約束

  • JDK:1.8 及以上(推薦 1.8.0_112 版本)
  • Maven:3.x 版本(推薦 3.3 以上)
  • 開(kāi)發(fā)工具:IntelliJ IDEA 2017+ 或 STS
  • Spring Boot 版本:本文以 2.0.2.RELEASE 為例(基于 Spring 5)

2. Maven 配置

在 Maven 的 settings.xml 配置文件的 profiles 標(biāo)簽中添加:

<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>

3 idea設(shè)置

四、Spring Boot 入門(mén)實(shí)戰(zhàn)(Hello World)

1. 實(shí)現(xiàn)步驟

  1. 創(chuàng)建 Maven 工程(選擇 jar 類型)
  2. 導(dǎo)入依賴
<parent>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-parent</artifactId>
    <version>1.5.9.RELEASE</version>
</parent>
<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
    </dependency>
</dependencies>
  1. 編寫(xiě)主程序類
@SpringBootApplication
public class HelloWorldMainApplication {
    public static void main(String[] args) {
        SpringApplication.run(HelloWorldMainApplication.class, args);
    }
}
  1. 編寫(xiě) Controller
@Controller
public class HelloController {
    @ResponseBody
    @RequestMapping("/hello")
    public String hello() {
        return "Hello World!";
    }
}
  1. 運(yùn)行測(cè)試:執(zhí)行主程序的 main 方法,訪問(wèn) http://localhost:8080/hello
  2. 簡(jiǎn)化部署:添加打包插件后,使用 mvn package 打包,通過(guò) java -jar 命令運(yùn)行
<build>
    <plugins>
        <plugin>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-maven-plugin</artifactId>
        </plugin>
    </plugins>
</build>

2. 核心原理探究

(1)POM 文件分析
  • 父項(xiàng)目spring-boot-starter-parent 的父項(xiàng)目是 spring-boot-dependencies,它是版本仲裁中心,管理所有依賴版本,因此導(dǎo)入依賴時(shí)通常無(wú)需指定版本。
  • 啟動(dòng)器(Starter)spring-boot-starter-web 是 Web 場(chǎng)景啟動(dòng)器,自動(dòng)導(dǎo)入 Web 開(kāi)發(fā)所需的組件(如 Spring MVC、Tomcat 等)。Spring Boot 將不同功能場(chǎng)景封裝為 starters,開(kāi)發(fā)者只需導(dǎo)入對(duì)應(yīng) starter 即可快速集成功能。
(2)主程序類注解分析

@SpringBootApplication 是核心注解,由以下注解組成:

/**
* @SpringBootApplication 來(lái)標(biāo)注一個(gè)主程序類,說(shuō)明這是一個(gè)Spring Boot應(yīng)用
*/
@SpringBootApplication
public class HelloWorldMainApplication {
     public static void main(String[] args) {
         // Spring應(yīng)用啟動(dòng)起來(lái)
         SpringApplication.run(HelloWorldMainApplication.class,args);
     }
}

@SpringBootConfiguration:標(biāo)識(shí)為 Spring Boot 配置類,內(nèi)部包含 @Configuration 注解,說(shuō)明配置類也是容器組件(@Component)。

@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
@SpringBootConfiguration
@EnableAutoConfiguration
@ComponentScan(excludeFilters = {
   @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
   @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
public @interface SpringBootApplication {


@EnableAutoConfiguration:開(kāi)啟自動(dòng)配置,包含:

@AutoConfigurationPackage:通過(guò) @Import 導(dǎo)入 AutoConfigurationPackages.Registrar,將主配置類所在包及子包下的組件掃描到 Spring 容器。以前我們需要配置的東西,Spring Boot幫我們自動(dòng)配置;@EnableAutoConfiguration告訴SpringBoot開(kāi)啟自動(dòng)配置功能;這樣自動(dòng)配置才能生效;

@AutoConfigurationPackage:自動(dòng)配置包

@Import(EnableAutoConfigurationImportSelector.class):從 META-INF/spring.factories 中加載自動(dòng)配置類(xxxAutoConfiguration),自動(dòng)配置場(chǎng)景所需組件,替代手動(dòng)配置。Spring的底層注解@Import,給容器中導(dǎo)入一個(gè)組件;導(dǎo)入的組件由AutoConfigurationPackages.Registrar.class;將主配置類(@SpringBootApplication標(biāo)注的類)的所在包及下面所有子包里面的所有組件掃描到Spring容器;

@Import(EnableAutoConfigurationImportSelector.class);

給容器中導(dǎo)入組件?EnableAutoConfigurationImportSelector:導(dǎo)入哪些組件的選擇器;

將所有需要導(dǎo)入的組件以全類名的方式返回;這些組件就會(huì)被添加到容器中;會(huì)給容器中導(dǎo)入非常多的自動(dòng)配置類(xxxAutoConfiguration);就是給容器中導(dǎo)入這個(gè)場(chǎng)景需要的所有組件,

并配置好這些組件;

有了自動(dòng)配置類,免去了我們手動(dòng)編寫(xiě)配置注入功能組件等的工作;SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader);

Spring Boot在啟動(dòng)的時(shí)候從類路徑下的META-INF/spring.factories中獲取EnableAutoConfiguration指定的值,將這些值作為自動(dòng)配置類導(dǎo)入到容器中,自動(dòng)配置類就生效,幫我們進(jìn)行自動(dòng)配置工作;以前我們需要自己配置的東西,自動(dòng)配置類都幫我們;

到此這篇關(guān)于Spring Boot 與微服務(wù)詳細(xì)總結(jié)的文章就介紹到這了,更多相關(guān)Spring Boot微服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • java的java.security.egd源碼解讀

    java的java.security.egd源碼解讀

    這篇文章主要為大家介紹了java的java.security.egd源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • 淺析Java迭代器Iterator和Iterable的區(qū)別

    淺析Java迭代器Iterator和Iterable的區(qū)別

    Java語(yǔ)言中,Iterator和Iterable都是用來(lái)遍歷集合類數(shù)據(jù)結(jié)構(gòu)的接口,雖然它們有很多相似的地方,但在具體實(shí)現(xiàn)中卻有著一些不同之處,本文將詳細(xì)分析它們的區(qū)別,并提供相應(yīng)的代碼示例,需要的朋友可以參考下
    2023-07-07
  • SpringBoot2.x配置多數(shù)據(jù)源方式

    SpringBoot2.x配置多數(shù)據(jù)源方式

    這篇文章主要介紹了SpringBoot2.x配置多數(shù)據(jù)源方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • springboot2.0集成rabbitmq的示例代碼

    springboot2.0集成rabbitmq的示例代碼

    這篇文章主要介紹了springboot2.0集成rabbitmq的示例代碼,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-12-12
  • 解決SpringMvc中普通類注入Service為null的問(wèn)題

    解決SpringMvc中普通類注入Service為null的問(wèn)題

    這篇文章主要介紹了解決SpringMvc中普通類注入Service為null的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Tomcat使用IDEA遠(yuǎn)程Debug調(diào)試的講解

    Tomcat使用IDEA遠(yuǎn)程Debug調(diào)試的講解

    今天小編就為大家分享一篇關(guān)于Tomcat使用IDEA遠(yuǎn)程Debug調(diào)試的講解,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-03-03
  • SpringMVC項(xiàng)目異常處理機(jī)制詳解

    SpringMVC項(xiàng)目異常處理機(jī)制詳解

    SpringMVC是一種基于Java,實(shí)現(xiàn)了Web MVC設(shè)計(jì)模式,請(qǐng)求驅(qū)動(dòng)類型的輕量級(jí)Web框架,即使用了MVC架構(gòu)模式的思想,將Web層進(jìn)行職責(zé)解耦?;谡?qǐng)求驅(qū)動(dòng)指的就是使用請(qǐng)求-響應(yīng)模型,框架的目的就是幫助我們簡(jiǎn)化開(kāi)發(fā),SpringMVC也是要簡(jiǎn)化我們?nèi)粘eb開(kāi)發(fā)
    2022-08-08
  • java控制線程運(yùn)行

    java控制線程運(yùn)行

    這篇文章主要介紹了java控制線程運(yùn)行,需要的朋友可以參考下
    2014-04-04
  • SpringBoot設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法詳解

    SpringBoot設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法詳解

    這篇文章主要為大家詳細(xì)介紹了SpringBoot設(shè)置動(dòng)態(tài)定時(shí)任務(wù)的方法,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)有一定的參考價(jià)值,需要的可以參考一下
    2022-06-06
  • 詳解java 客戶端鏈接不上redis解決方案

    詳解java 客戶端鏈接不上redis解決方案

    這篇文章主要介紹了詳解java 客戶端鏈接不上redis解決方案,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下。
    2017-01-01

最新評(píng)論