设为首页收藏本站
网站公告 | 这是第一条公告
     

 找回密码
 立即注册
缓存时间18 现在时间18 缓存数据 从头到尾 我要的只有感情 可没人能给我

从头到尾 我要的只有感情 可没人能给我 -- 情深深雨濛濛

查看: 330|回复: 0

Spring Boot 与微服务入门实战详细总结

[复制链接]

  离线 

TA的专栏

  • 打卡等级:热心大叔
  • 打卡总天数:203
  • 打卡月天数:0
  • 打卡总奖励:3044
  • 最近打卡:2023-08-27 04:10:06
等级头衔

等級:晓枫资讯-上等兵

在线时间
0 小时

积分成就
威望
0
贡献
377
主题
355
精华
0
金钱
4156
积分
762
注册时间
2022-12-27
最后登录
2025-8-28

发表于 2025-8-28 00:55:02 | 显示全部楼层 |阅读模式

一、Spring Boot 核心概述

Spring Boot 是简化 Spring 应用开发的框架,作为 Spring 技术栈的整合方案和 J2EE 开发的一站式解决方案,其核心优势体现在:

  • 快速创建独立运行的 Spring 项目,轻松集成主流框架
  • 内置 Servlet 容器(如 Tomcat),无需打包为 war 包即可部署
  • 提供 starters 机制,实现自动依赖管理与版本控制,减少版本冲突问题
  • 大量自动装配功能简化开发流程,同时支持自定义默认配置
  • 零 XML 配置、无代码生成,真正实现开箱即用
  • 内置准生产环境的运行时监控功能,便于项目运维
  • 与云计算天然适配,满足现代部署需求

二、微服务架构详解

1. 微服务的定义与演进

2014 年,Martin Fowler 提出微服务架构理念(参考文档:Microservices Guide)。从技术演进路径看,架构风格经历了:Servlet → SSH → SSM → 单体应用 → SOA → Spring Cloud 的发展过程。

微服务的核心定义为:一种将应用拆分为多个小型、独立业务服务的架构风格。每个服务具备独立处理逻辑和轻量通讯机制,可部署在单个或多个服务器上,是松耦合、具有有界上下文的面向服务架构。

  • 单体应用:所有功能模块集中在一个应用中(ALL IN ONE)
  • 微服务:每个功能元素都是可独立替换和升级的软件单元,通过 HTTP 等协议实现服务间通信

2. 微服务的优缺点

优势缺点
聚焦单一业务功能,服务体积小巧分布式系统操作复杂,运维成本高
支持 2-5 人小团队独立开发可能存在重复开发工作
松耦合设计,开发与部署独立问题跟踪困难,排查成本高
支持多语言开发服务数量增加后,管理复杂度指数上升
易于集成自动化部署和持续集成-
便于理解、修改和维护-
可按需扩展,资源利用更高效-
支持中低端服务器部署-
易于与第三方系统集成-
数据存储灵活(独立数据库或统一数据库)-

三、Spring Boot 开发环境准备

1. 环境约束

  • JDK:1.8 及以上(推荐 1.8.0_112 版本)
  • Maven:3.x 版本(推荐 3.3 以上)
  • 开发工具:IntelliJ IDEA 2017+ 或 STS
  • Spring Boot 版本:本文以 2.0.2.RELEASE 为例(基于 Spring 5)

2. Maven 配置

在 Maven 的 

  1. settings.xml
复制代码
 配置文件的 
  1. profiles
复制代码
 标签中添加:

  1. <profile>
  2. <id>jdk‐1.8</id>
  3. <activation>
  4. <activeByDefault>true</activeByDefault>
  5. <jdk>1.8</jdk>
  6. </activation>
  7. <properties>
  8. <maven.compiler.source>1.8</maven.compiler.source>
  9. <maven.compiler.target>1.8</maven.compiler.target>
  10. <maven.compiler.compilerVersion>1.8</maven.compiler.compilerVersion>
  11. </properties>
  12. </profile>
复制代码

3 idea设置

1.jpeg

2.jpeg

四、Spring Boot 入门实战(Hello World)

1. 实现步骤

  1. 创建 Maven 工程(选择 jar 类型)
  2. 导入依赖
  1. <parent>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-parent</artifactId>
  4. <version>1.5.9.RELEASE</version>
  5. </parent>
  6. <dependencies>
  7. <dependency>
  8. <groupId>org.springframework.boot</groupId>
  9. <artifactId>spring-boot-starter-web</artifactId>
  10. </dependency>
  11. </dependencies>
复制代码
  1. 编写主程序类
  1. @SpringBootApplication
  2. public class HelloWorldMainApplication {
  3. public static void main(String[] args) {
  4. SpringApplication.run(HelloWorldMainApplication.class, args);
  5. }
  6. }
复制代码
  1. 编写 Controller
  1. @Controller
  2. public class HelloController {
  3. @ResponseBody
  4. @RequestMapping("/hello")
  5. public String hello() {
  6. return "Hello World!";
  7. }
  8. }
复制代码
  1. 运行测试:执行主程序的 main 方法,访问 
    1. http://localhost:8080/hello
    复制代码
  2. 简化部署:添加打包插件后,使用 
    1. mvn package
    复制代码
     打包,通过 
    1. java -jar
    复制代码
     命令运行
  1. <build>
  2. <plugins>
  3. <plugin>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-maven-plugin</artifactId>
  6. </plugin>
  7. </plugins>
  8. </build>
复制代码

2. 核心原理探究

(1)POM 文件分析
  • 父项目
    1. spring-boot-starter-parent
    复制代码
     的父项目是 
    1. spring-boot-dependencies
    复制代码
    ,它是版本仲裁中心,管理所有依赖版本,因此导入依赖时通常无需指定版本。
  • 启动器(Starter)
    1. spring-boot-starter-web
    复制代码
     是 Web 场景启动器,自动导入 Web 开发所需的组件(如 Spring MVC、Tomcat 等)。Spring Boot 将不同功能场景封装为 starters,开发者只需导入对应 starter 即可快速集成功能。
(2)主程序类注解分析

  1. @SpringBootApplication
复制代码
 是核心注解,由以下注解组成:

  1. /**
  2. * @SpringBootApplication 来标注一个主程序类,说明这是一个Spring Boot应用
  3. */
  4. @SpringBootApplication
  5. public class HelloWorldMainApplication {
  6. public static void main(String[] args) {
  7. // Spring应用启动起来
  8. SpringApplication.run(HelloWorldMainApplication.class,args);
  9. }
  10. }
复制代码

@SpringBootConfiguration:标识为 Spring Boot 配置类,内部包含 

  1. @Configuration
复制代码
 注解,说明配置类也是容器组件(
  1. @Component
复制代码
)。

  1. @Target(ElementType.TYPE)
  2. @Retention(RetentionPolicy.RUNTIME)
  3. @Documented
  4. @Inherited
  5. @SpringBootConfiguration
  6. @EnableAutoConfiguration
  7. @ComponentScan(excludeFilters = {
  8. @Filter(type = FilterType.CUSTOM, classes = TypeExcludeFilter.class),
  9. @Filter(type = FilterType.CUSTOM, classes = AutoConfigurationExcludeFilter.class) })
  10. public @interface SpringBootApplication {
复制代码

@EnableAutoConfiguration:开启自动配置,包含:

@AutoConfigurationPackage:通过 

  1. @Import
复制代码
 导入 
  1. AutoConfigurationPackages.Registrar
复制代码
,将主配置类所在包及子包下的组件扫描到 Spring 容器。以前我们需要配置的东西,Spring Boot帮我们自动配置;@EnableAutoConfiguration告诉SpringBoot开启自动配置功能;这样自动配置才能生效;

@AutoConfigurationPackage:自动配置包

@Import(EnableAutoConfigurationImportSelector.class):从 

  1. META-INF/spring.factories
复制代码
 中加载自动配置类(
  1. xxxAutoConfiguration
复制代码
),自动配置场景所需组件,替代手动配置。Spring的底层注解@Import,给容器中导入一个组件;导入的组件由AutoConfigurationPackages.Registrar.class将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器;

@Import(EnableAutoConfigurationImportSelector.class)

给容器中导入组件?EnableAutoConfigurationImportSelector:导入哪些组件的选择器;

将所有需要导入的组件以全类名的方式返回;这些组件就会被添加到容器中;会给容器中导入非常多的自动配置类(xxxAutoConfiguration);就是给容器中导入这个场景需要的所有组件,

并配置好这些组件;

3.jpeg

有了自动配置类,免去了我们手动编写配置注入功能组件等的工作;SpringFactoriesLoader.loadFactoryNames(EnableAutoConfiguration.class,classLoader)

Spring Boot在启动的时候从类路径下的META-INF/spring.factories中获取EnableAutoConfiguration指定的值,将这些值作为自动配置类导入到容器中,自动配置类就生效,帮我们进行自动配置工作;以前我们需要自己配置的东西,自动配置类都帮我们;

到此这篇关于Spring Boot 与微服务详细总结的文章就介绍到这了,更多相关Spring Boot微服务内容请搜索晓枫资讯以前的文章或继续浏览下面的相关文章希望大家以后多多支持晓枫资讯!


免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
晓枫资讯-科技资讯社区-免责声明
免责声明:以上内容为本网站转自其它媒体,相关信息仅为传递更多信息之目的,不代表本网观点,亦不代表本网站赞同其观点或证实其内容的真实性。
      1、注册用户在本社区发表、转载的任何作品仅代表其个人观点,不代表本社区认同其观点。
      2、管理员及版主有权在不事先通知或不经作者准许的情况下删除其在本社区所发表的文章。
      3、本社区的文章部分内容可能来源于网络,仅供大家学习与参考,如有侵权,举报反馈:点击这里给我发消息进行删除处理。
      4、本社区一切资源不代表本站立场,并不代表本站赞同其观点和对其真实性负责。
      5、以上声明内容的最终解释权归《晓枫资讯-科技资讯社区》所有。
http://bbs.yzwlo.com 晓枫资讯--游戏IT新闻资讯~~~
严禁发布广告,淫秽、色情、赌博、暴力、凶杀、恐怖、间谍及其他违反国家法律法规的内容。!晓枫资讯-社区
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|晓枫资讯--科技资讯社区 本站已运行

CopyRight © 2022-2025 晓枫资讯--科技资讯社区 ( BBS.yzwlo.com ) . All Rights Reserved .

晓枫资讯--科技资讯社区

本站内容由用户自主分享和转载自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。

如有侵权、违反国家法律政策行为,请联系我们,我们会第一时间及时清除和处理! 举报反馈邮箱:点击这里给我发消息

Powered by Discuz! X3.5

快速回复 返回顶部 返回列表