java微服务(Springboot篇)——————IDEA搭建第一个Springboot入门项目

在正文开始之前我们先来解决一些概念性的问题

🍕🍕🍕 问题1:Spring,Spring MVC,Spring Boot和Spring Cloud之间的区别与联系?

🍬🍬🍬(1)Spring框架
Spring框架是一个开源的Java企业级应用开发框架,它的核心思想是通过**依赖注入(DI)面向切面编程(AOP)**来降低组件间的耦合性,增强代码的可维护性和可测试性。

核心内容:
💙IoC容器(控制反转):用于管理应用中的对象及其生命周期,提供依赖注入(DI)功能。
💙AOP模块(面向切面编程):提供声明式事务管理、日志记录等功能。
💙数据访问:简化了JDBC的使用,提供对ORM框架(如Hibernate)的支持。
💙事务管理:支持声明式和编程式的事务管理。
💙消息服务:提供JMS(Java Message Service)支持。
💙Web框架:为Web应用提供灵活的支持。

🍬🍬🍬(2)Spring MVC
Spring MVC是Spring框架中的一个Web模块,它实现了MVC(Model-View-Controller)设计模式。Spring MVC提供了一个灵活的方式来处理Web请求,解耦了请求的处理与业务逻辑。

核心组件:

💙DispatcherServlet:中央调度器,接收所有的HTTP请求并将其转发给相应的处理器(Controller)。
💙Controller:处理请求并返回相应的模型数据。
💙ModelAndView:封装了模型数据和视图信息,用于将模型数据传递到视图层。
💙View Resolver:根据返回的视图名解析实际的视图资源。

🍬🍬🍬(3)Spring Boot
Spring Boot是基于Spring的一个开源框架,旨在简化Spring应用的开发过程。它通过约定优于配置(Convention over Configuration)的方式,减少了开发者的配置工作,并提供了一些开箱即用的功能。

Spring Boot的特点:
💙简化配置:通过application.properties或者application.yml进行配置,避免了繁琐的XML配置。
💙嵌入式容器:内置Web容器(如Tomcat、Jetty、Undertow),开发者无需部署WAR包,可以直接启动应用。
💙自动配置:自动配置Spring和第三方库(如数据库连接池、JPA等),使得开发者专注于业务逻辑。
💙生产级功能:Spring Boot集成了诸如Actuator(监控)、Metrics(性能指标)等功能,方便开发者进行应用运维。

🍬🍬🍬(4)Spring Cloud
Spring Cloud是构建分布式系统的开发工具集,它提供了许多用于构建微服务架构的功能。Spring Cloud构建在Spring Boot之上,结合了很多用于分布式系统开发的常见模式和解决方案。

主要模块:
💙Spring Cloud Netflix:提供了服务发现(Eureka)、负载均衡(Ribbon)、断路器(Hystrix)等功能。
💙Spring Cloud Config:集中配置管理。
💙Spring Cloud Gateway:API网关,用于路由请求到微服务。
💙Spring Cloud Stream:分布式消息传递。
💙Spring Cloud Security:安全认证和授权。
💙Spring Cloud Sleuth:分布式追踪。

特点:
💙服务注册与发现:通过Eureka实现服务的自动注册和发现,支持负载均衡。
💙断路器模式:通过Hystrix提供的断路器模式,保证服务的高可用性。
💙API网关:Spring Cloud Gateway作为API网关,提供路由、负载均衡、权限控制等功能。
配置管理:通过Spring Cloud Config实现集中化配置管理。
💙分布式追踪:支持分布式追踪,帮助开发者了解系统内部的调用链路。

🍬🍬🍬(5)联系
💙Spring和Spring MVC关系
Spring MVC是Spring框架的一个模块,负责Web层的开发。它是Spring框架的一部分,利用Spring的核心功能(如IoC、AOP等),为Web应用提供全面的支持。
💙Spring Boot与Spring的关系
Spring Boot基于Spring框架,但它的目标是简化Spring应用的创建和部署。它通过自动化配置和嵌入式服务器,让开发者能够更加高效地开发和部署应用。

💙Spring Cloud与Spring Boot的关系
Spring Cloud构建在Spring Boot之上,利用Spring Boot的特性简化了分布式系统的开发。Spring Cloud为微服务架构提供了常用的基础设施组件,而Spring Boot则负责提供应用的快速开发和自动配置。

可以理解为SpringMVC是Spring框架的子模块,SpringBoot是Spring的扩展版本,SpringCloud又是SpringBoot的扩展,用于微服务架构

🍕🍕🍕问题2:什么是面向切面编程(AOP)

面向切面编程(AOP)通过将横切关注点(cross-cutting concerns)分离出来,提供了一种增强代码模块化和可维护性的方法。

简单来说,AOP就是将公共的模块封装成公共的方法,然后在需要的时候(这个就是切入点),直接就可以调用,而不用在各个对象里面具体的实现。

AOP是一种新的编程方式,它和OOP不同,OOP把系统看作多个对象的交互,AOP把系统分解为不同的关注点,或者称之为切面(Aspect)。这个可以理解为把系统理解为一个流程,一个对象负责流程上的一个节点。

当然,要彻底理解AOP需要大量的实践才能理解

🍕🍕🍕问题3:什么是微服务?

💙微服务(Microservices)是一种软件架构设计模式,它将应用程序分解为小型、自治的服务单元,这些服务单元可以独立部署、扩展和维护,其中每一个服务单元也都是一个微服务。与分布式操作系统类似

基于微服务形成的软件架构风格称为微服务架构(Microservices Architecture),它涵盖了使用微服务构建应用程序的全套原则、模式和最佳实践,关注如何将应用程序分解为多个微服务,以及这些服务如何交互、如何维护服务之间的独立性、如何实现服务的持续交付和部署等。在日常使用中,微服务又常被称为微服务架构,两者不区分使用。

说明白概念之后我们进入本文的正题————用IDEA搭建第一个Springboot入门项目

❤️第一步:新建项目
依次点击File——New——Project
在这里插入图片描述
❤️第二步:在弹出的框中勾选配置**
注意:
(1)Name可以自己指定,指定完成后Artifat也会跟着变化
(2)Package name等于Group和Artifact连接起来的名称
(3)Group 和Artifact都可以自己指定
(4)Type要选择MAVEN不要选GRADLE
(5)JDK要选择电脑上已经安装的JDK版本,Springboot2搭载的是JDK8,目前企业级开发支持的是JDK21,我这里使用的是JDK17
(6)打包方式选择JAR方式打包
(7)左侧栏选择Spring Initializr
(8)全部勾选完点击next
在这里插入图片描述

❤️第三步:勾选依赖项
注意:
(1)Web下拉框选择Spring web,选择完成后右边框中就会出现对应的名称
(2)Springboot选择稳定的版本,我这里是3.5.3,不要选择快照版(版本号跟SNAPSHOT的),快照版不稳定
在这里插入图片描述

❤️第四步:点击Create创建成功
注意联网状态下才能创建成功

❤️第五步:创建控制器类包和控制器类(在main文件夹下)
在这里插入图片描述

❤️第六步:在controller包下的BookController类中写代码
在这里插入图片描述

package com.example.demo.controller;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
@RequestMapping("/books")
public class BookController {@GetMappingpublic String getById(){System.out.println("springboot is running...");return "springboot is running";}
}

这段代码的运行效果是在浏览器页面上输出springboot is running

❤️第七步:找见下图中的DemoApplication右键选择run
注意:
(1)Application是系统自动生成的我们不需要创建
(2)Springboot项目的启动依赖下图中的Application和ApplicationTests
在这里插入图片描述
在这里插入图片描述

❤️第八步:启动Springboot项目,如下图所示
启动后可以看到Tomcat端口号和8080和访问路径“\”在这里插入图片描述

❤️第九步:通过我们代码中的路径查看程序运行效果
@RequestMapping(“/books”)这行代码给出了一级路径books,我们在浏览器中输入http://localhost:8080/books就可以出现下图效果

在这里插入图片描述

❤️第十步:返回浏览器查看控制台信息发现控制台输出了springboot is running的信息
在这里插入图片描述

至此我们第一个Springboot项目完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/913238.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/913238.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

服务器间接口安全问题的全面分析

一、服务器接口安全核心威胁 文章目录**一、服务器接口安全核心威胁**![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/6f54698b9a22439892f0c213bc0fd1f4.png)**二、六大安全方案深度对比****1. IP白名单机制****2. 双向TLS认证(mTLS)****3. JWT签名认证****4. OAuth…

vs code关闭函数形参提示

问题:函数内出现灰色的形参提示 需求/矛盾: 这个提示对老牛来说可能是一种干扰,比如不好对齐控制一行代码的长度,或者容易看走眼,造成眼花缭乱的体验。 关闭方法: 进入设置,输入inlay Hints&…

ESXi 8.0安装

使用群晖,突然nvme固态坏了 新nvme固态,先在PC上格式化下,不然可能N100可能不认 启动,等待很长时间 回车 F11 输入密码,字母小写字母大写数字 拔掉U盘,回车重启 网络配置 按F2, 输入密码&…

【git学习】第2课:查看历史与版本回退

好的,我们进入 第2课:版本查看与回退机制,本课你将学会如何查看提交历史、对比更改,并掌握多种回退版本的方法。📘 第2课:查看历史与版本回退🎯 本课目标熟练查看 Git 提交记录掌握差异查看、版…

摄像头AI智能识别工程车技术及应用前景展望

摄像头AI自动识别工程车是智能交通系统和工程安全管理领域的一项重要技术。它通过图像识别技术和深度学习算法,实现对工程车的自动检测和识别,从而提高了施工现场的安全性和管理效率。以下是对该技术及其应用的详细介绍:一、技术实现数据收集…

Windows服务器安全配置:组策略与权限管理最佳实践

Windows服务器是企业常用的服务器操作系统,但其开放性和复杂性也使其成为攻击者的目标。通过正确配置组策略和权限管理,可以有效提高安全性,防止未经授权的访问和恶意软件的入侵。以下是详细的安全配置指南和最佳实践。 1. 为什么组策略和权限…

Windows部署Rocketmq问题汇总

最近研究了下Rocketmq消息中间件,在Win10上部署时遇到一些问题,做个记录 部署的是Rocketmq 4.92版本,对应使用的控制台用的1.0版本 下载地址 1.优化内存占用 修改 runserver.cmd 修改前 set "JAVA_OPT%JAVA_OPT% -server -Xms2g -Xmx…

动手学深度学习-学习笔记(总)

文章目录 1、概述2、内容2.1、python2.2、动手学深度学习2.2.1、课前准备2.2.2、预备知识2.2.3、线性神经网络 2.3、深度学习重要概念 3、常见问题3.1、安装 d2l 失败3.2、调用 mean() 方法报错3.3、markdown 常见公式3.4、执行动手学深度学习中的代码,无法显示图片…

springboot3.5 MySQL 自动装配解析

一、配置环境 1. 配置pom.xml <dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><scope>runtime</scope></dependency> 2、自动配置图解 二、相关代码解析 1、自动配置入口&#xff1a…

使用 Conda 工具链创建 Poetry 本地虚拟环境全记录——基于《Python 多版本与开发环境治理架构设计》

Python 多版本治理理念&#xff08;Windows 平台 零基础友好&#xff09;-CSDN博客 Python 多版本与开发环境治理架构设计-CSDN博客 使用命令行创建项目本地的 Poetry 虚拟环境实战演示 —— 基于《Python 多版本与开发环境治理架构设计》的最佳实践-CSDN博客 一、Python311 环…

北小菜, python , onvif

第一节&#xff1a; 首先是环境的搭建。 环境的搭建。 roottopeet:/home/topeet/source_code/wang_onvif_python# python -m venv venv Command python not found, did you mean:command python3 from deb python3command python from deb python-is-python3 roottopeet:/ho…

TinyWebserver学习(9)-HTTP

一、相关知识 1、有限状态机&#xff1a; 有限状态机&#xff08;Finite State Machine, FSM&#xff09;是一种用于描述对象在其生命周期内可能经历的不同状态及其状态转换规则的模型。它广泛应用于游戏开发、网络协议、词法解析、UI逻辑控制等领域。以下是C中有限状态机的简…

2025最新软件测试面试八股文

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 Part1 1、你的测试职业发展是什么&#xff1f; 测试经验越多&#xff0c;测试能力越高。所以我的职业发展是需要时间积累的&#xff0c;一步步向着高级测试工程师…

React 强大的表单验证库formik之集成Yup、React Hook Form库

简介 Formik 是为 React 开发的开源表单库&#xff0c;提供状态管理、验证和提交处理功能&#xff0c;可简化复杂表单的开发。 核心优势 ‌- 状态管理 ‌&#xff1a;自动跟踪输入值、验证状态和提交进度&#xff0c;无需手动编写状态逻辑。 ‌ ‌- 验证功能 ‌&#xff1a;…

破解风电运维“百模大战”困局,机械版ChatGPT诞生?

面对风机87%的非计划停机&#xff0c;30多个专用模型为何束手无策&#xff1f;一套通用大模型如何实现轴承、齿轮、转子“一站式”健康管理&#xff1f;一、行业痛点&#xff1a;风机运维深陷“碎片化泥潭”1.1 87%停机故障由多部件引发齿轮断裂、轴承磨损、电机短路……风电故…

Spring Bean 控制销毁顺序的方法总结

控制Spring Bean销毁顺序的方法 在Spring框架中&#xff0c;有几种方法可以控制Bean的销毁顺序。以下是主要的几种方式及其示例代码&#xff1a; 1. 实现DisposableBean接口 实现DisposableBean接口并重写destroy()方法&#xff0c;Spring会按照依赖关系的相反顺序调用这些方…

Gemini CLI MCP 教程:设置、命令与实际使用

如果你想要为任何 MCP 服务器设置 Gemini CLI,这个快速教程将为你提供指导。 Gemini CLI 结合 MCP(模型上下文协议)服务器,改变了你通过自然语言命令进行编码的方式。 你可以要求 Gemini 分析你的代码库、管理文件、查询数据库,或通过对话提示与 API 交互。 MCP 服务器连…

LangChain 构建向量数据库和检索器

LangChain 构建向量数据库和检索器实战 随着大语言模型&#xff08;LLM&#xff09;在各类 AI 应用中不断普及&#xff0c;RAG&#xff08;Retrieval-Augmented Generation&#xff0c;检索增强生成&#xff09;逐渐成为提升回答准确率与上下文关联性的重要技术路径。 一、什…

基于 LangChain 实现通义千问 + Tavily 搜索 Agent 的简单实践

文章目录 一、相关背景1.1 LangChain 简介1.2 通义千问&#xff08;Tongyi Qianwen&#xff09;1.3 Tavily 实时搜索引擎1.4 架构总览 二、环境配置设置 API 密钥 三、 Tavily 搜索四、智能 Agent 示例&#xff1a;自动判断是否调用 Tavily4.1 初始化 Agent4.2 提问两个问题&am…

SegGPT: 在上下文中分割一切

摘要 我们提出了 SegGPT&#xff0c;一个在上下文中执行“分割一切”的通用模型。我们将各种分割任务统一为一个通用的上下文学习框架&#xff0c;通过将不同类型的分割数据转换为相同的图像格式来兼容这些差异。SegGPT 的训练被建模为一个带有随机颜色映射的上下文着色问题。…