Spring Boot入门

Spring Boot快速入门指南(新手向) SpringBoot入门 0.学习目标 了解SpringBoot的作用 了解Java配置的方式 了解Spring Boot自动配置原理 掌握Spring Boot的基本使用 了解Thmeleaf的基本使用 1.了解Spring Boot 在这一部分,我们主要了解以下3个问题: 什么是SpringBoot 为什么要学习SpringBoot SpringBoot的特点 1.1.什么是SpringBoot Spring Boot是Spring项目中的一个子工程,与我们之前所学习的Spring-framew 阅读详情

简介:

  • Spring Boot来简化Spring应用开发,约定大于配置,去繁从简,just run就能创建一个独立的,产品级别的应用。
    • 简化Spring应用开发的一个框架
    • 整个Spring技术栈的一个大整合
    • J2EE开发的一站式解决方案

特性:

  • Create stand-alone Spring applications

    • 【创建独立的Spring应用程序】

  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)

    • 【直接嵌入Tomcat、Jetty或Undertow(不需要部署WAR文件)】

  • Provide opinionated 'starter' dependencies to simplify your build configuration

    • 【提供固执己见的“starter”依赖项来简化构建配置】

  • Automatically configure Spring and 3rd party libraries whenever possible

    • 【尽可能自动配置Spring和第三方库】

  • Provide production-ready features such as metrics, health checks and externalized configuration

    • 【提供可用于生产的特性,如度量标准、健康状况检查和外部化配置】

  • Absolutely no code generation and no requirement for XML configuration

    • 【完全不需要代码生成,也不需要XML配置】

微服务:

  • 简而言之,微服务体系结构风格是一种将单个应用程序作为一组小服务来开发的方法,每个小服务都在自己的进程中运行,并与轻量级机制(通常是HTTP资源API)进行通信。这些服务是围绕业务功能构建的,可以通过完全自动化的部署机制独立部署。这些服务的集中管理很少,可能使用不同的编程语言编写并使用不同的数据存储技术。
  • 总结:
    • 现在 微服务是一种:架构风格(服务微化)
    • 一个应用应该是一组小型服务,可以通过HTTP的方式进行互通
    • 微服务:每一个功能元素最终都是一个可独立替换和独立升级的软件单元
    • 早期 单体应用:ALL IN ONE
    • 优点:
      • 开发测试简单(只有一个应用不牵扯到多个应用之间的互连)
      • 部署简单(将整个应用打成war包部署在TomCat中)
      • 水平扩展简单(当应用的负载能力不行的时候,我们把相同的应用复制很多,放在很多服务器,提高并发能力)

微服务与SOA架构对比:

  • SOA架构特点:

    • 系统集成:

      • 站在系统的角度,解决企业系统间的通信问 题,把原先散乱、无规划的系统间的网状结构,梳理成 规整、可治理的系统间星形结构,这一步往往需要引入 一些产品,比如 ESB、以及技术规范、服务管理规范; 这一步解决的核心问题是【有序】

    • 系统的服务化:

      • 站在功能的角度,把业务逻辑抽象成 可复用、可组装的服务,通过服务的编排实现业务的 快速再生,目的:把原先固有的业务功能转变为通用 的业务服务,实现业务逻辑的快速复用;这一步解决 的核心问题是【复用】

    • 业务的服务化:

      • 站在企业的角度,把企业职能抽象成 可复用、可组装的服务;把原先职能化的企业架构转变为服务化的企业架构,进一步提升企业的对外服务能力;“前面两步都是从技术层面来解决系统调用、系统功能复用的问题”。第三步,则是以业务驱动把一个业务单元封装成一项服务。这一步解决的核心问题是【高效】

  • 微服务架构特点:

    • 通过服务实现组件化:

      • 开发者不再需要协调其它服务部署对本服务的影响。

    • 按业务能力来划分服务和开发团队:

      • 开发者可以自由选择开发技术,提供 API 服务

    • 去中心化:

      • 每个微服务有自己私有的数据库持久化业务数据
      • 每个微服务只能访问自己的数据库,而不能访问其它服务的数据库
      • 某些业务场景下,需要在一个事务中更新多个数据库。这种情况也不能直接访问其它微服务的数据库,而是通过对于微服务进行操作。
        数据的去中心化,进一步降低了微服务之间的耦合度,不同服务可以采用不同的数据库技术(SQL、NoSQL等)。在复杂的业务场景下,如果包含多个微服务,通常在客户端或者中间层(网关)处理。
    • 基础设施自动化(devops、自动化部署):
      • Java EE部署架构,通过展现层打包WARs,业务层划分到JARs最后部署为EAR一个大包,而微服务则打开了这个黑盒子,把应用拆分成为一个一个的单个服务,应用Docker技术,不依赖任何服务器和数据模型,是一个全栈应用,可以通过自动化方式独立部署,每个服务运行在自己的进程中,通过轻量的通讯机制联系,经常是基于HTTP资源API,这些服务基于业务能力构建,能实现集中化管理(因为服务太多啦,不集中管理就无法DevOps啦)。
  • 主要区别:
    • 功能

      SOA

      微服务

      组件大小

      大块业务逻辑

      单独任务或小块业务逻辑

      耦合

      通常松耦合

      总是松耦合

      公司架构

      任何类型

      小型、专注于功能交叉团队

      管理

      着重中央管理

      着重分散管理

      目标

      确保应用能够交互操作

      执行新功能、快速拓展开发团队

  • [详细参照微服务文档]:https://martinfowler.com/articles/microservices.html#MicroservicesAndSoa

SpringBoot的简单应用:

  • 一个功能:浏览器发送hello请求,服务器接受请求并处理,响应Hello World字符串
  • 步骤:
    • 创建一个maven工程;(jar)
    • 导入SpringBoot相关的依赖
      • <parent>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-parent</artifactId>
            <version>2.2.0.RELEASE</version>
            <relativePath/> <!-- lookup parent from repository -->
        </parent>
            
        <dependencies>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
        </dependencies>
    • 编写一个主程序:启动SpringBoot应用

      • import org.springframework.boot.SpringApplication;
        import org.springframework.boot.autoconfigure.SpringBootApplication;
        
        /**
         * @author Mr.Li
         * @version 1.0
         * @Description:
         * @Modified By:
         * @date 2019/10/20 20:02
         */
        
        // @SpringBootApplication: 告诉SpringBoot来标注一个主程序类,说明这是一个SpringBoot应用
        @SpringBootApplication
        public class HelloWorldMainApplication {
        
            public static void main(String[] args) {
                // Spring应用启动起来
                SpringApplication.run(HelloWorldMainApplication.class , args);
            }
        }
        
    • 编写相关的Controller、Service

      • import org.springframework.stereotype.Controller;
        import org.springframework.web.bind.annotation.RequestMapping;
        import org.springframework.web.bind.annotation.ResponseBody;
        
        /**
         * @author Mr.Li
         * @version 1.0
         * @Description:
         * @Modified By:
         * @date 2019/10/20 20:44
         */
        
        @Controller
        public class HelloController {
        
            //接收浏览器的hello请求
            @RequestMapping("/hello")
            //把该方法的返回值写给浏览器
            @ResponseBody
            public String hello(){
                return "Hello World";
            }
        }
        
    • 启动测试:运行main方法【得到TomCat的端口号为8080】

      • 直接输入 localhost:8080

      • 输入 localhost:8080/hello

    • 简化部署工作

      • 导入插件

        •     <!--这个插件,可以将应用打包成可执行的 jar包-->
              <build>
                  <plugins>
                      <plugin>
                          <groupId>org.springframework.boot</groupId>
                          <artifactId>spring-boot-maven-plugin</artifactId>
                          <!--
                              创建一个自动可执行的jar或war文件。它可以替换常规的artifact,
                              或者用一个单独的classifier附属在maven构建的生命周期中。
                          -->
                          <executions>
                              <execution>
                                  <goals>
                                      <goal>repackage</goal>
                                  </goals>
                              </execution>
                          </executions>
                      </plugin>
                  </plugins>
              </build>
          
      • 将得到的jar包复制粘贴到桌面,并查看属性得到包的路径

      • 打开cmd窗口,并运行jar包

      • 再次进行测试

  • 分析jar包:

    • 使用360压缩打开得到

    • 进入BOOT-INF

      • 进入lib

        • 全是jar包

        • 并且拉倒最下边会发现有TomCat的jar包

        • 所以SpringBoot中不需要配置TomCat

    • 进入META-INF

      • 进入MANIFEST.MF

Hello World 探究:

  • pom文件
    • SpringBoot的版本仲裁中心,以后导入依赖默认是不需要写版本
      • 得到父项目【Ctrl+鼠标】,用来管理SpringBoot应用里的所有版本依赖
      • 没有在dependencies里面管理的依赖自然需要声明版本号
    • spring-boot-starter:SpringBoot场景启动器
      • 帮我们导入了web模块正常运行所依赖的组件,依赖的版本号有父项目仲裁。
    • Spring Boot将所有的功能场景都抽取出来,做成一个个的starters(启动器),只需要在项目里面引入这些starter相关场景的所有依赖都会导入进来。要用什么功能就导入什么场景的启动器
  • 主程序类,主入口类
    • @SpringBootApplication:SpringBoot应用标注在某个类上,说明这个类是SpringBoot的主配置类,SpringBoot就应该运行这个类的main方法来启动SpringBoot应用
      • 进入@SpringBootApplication得到组合注解
      • @SpringBootConfiguration:SpringBoot的配置类
        • 标注在某个类上,表示这是一个SpringBoot配置类
        • 进入@SpringBootConfiguration注解:
          • @Configuration:配置类上来标注这个注解
            • 配置类 -----  配置文件,配置类也是容器中的一个组件,@Component
      • @EnableAutoConfiguration:开启自动配置功能
        • 以前我们需要配置的东西,Spring Boot帮我们自动配置,由@EnableAutoConfiguration告诉SpringBoot开启自动配置功能,这样自动配置才能生效
        • 进入@EnableAutoConfiguration注解:
          • @AutoConfigurationPackage:自动配置包
            • 进入@AutoConfigurationPackage注解
              • @Import(AutoConfigurationPackages.Registrar.class): Spring的底层注解@Import,给容器中导入一个组件 ,导入的组件由AutoConfigurationPackages.Registrar.class
              • 将主配置类(@SpringBootApplication标注的类)的所在包及下面所有子包里面的所有组件扫描到Spring容器
          • @Import(EnableAutoConfigurationImportSelector.class) :给容器中导入组件
            • EnableAutoConfigurationImportSelector:导入哪些组件的选择器
              • 将所有需要导入的组件以全类名的方式返回,这些组件就会被添加到容器中
              • 会给容器中导入非常多的自动配置类(xxxAutoConfiguration),就是给容器中导入这个场景需要的所有组件,并配置好这些组件
              • 有了自动配置类,免去了我们手动编写配置注入功能组件等的工作
  • J2EE的整体整合解决方案和自动配置都在spring-boot-autoconfigure-1.5.9.RELEASE.jar

使用Spring Initializer快速创建Spring Boot项目

  • IDEA:使用 Spring Initializer快速创建项目

    • 选择模块,根据自己需要的选择

    • 之后会有选择文件名以及路径这个直接默认就行,之后点击完成即可

    • 运行主程序

    • 得到结果

  • ​​​​​​​​​​​​​​默认生成的SpringBoot项目

    • 主程序已经生成好了,我们只需要我们自己的逻辑

    • resources文件夹中目录结构

      • static:保存所有的静态资源, js css images

      • templates:保存所有的模板页面,(Spring Boot默认jar包使用嵌入式的Tomcat,默认不支持JSP页面),可以使用模板引擎(freemarker、thymeleaf)

      • application.properties:Spring Boot应用的配置文件,可以修改一些默认设置

        • 例如:修改默认的端口号

Spring Boot 入门案例 Spring Boot 入门案例总体步骤新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 总体步骤 建立数据表和实体类,要与数据表字段保持一致 建立mapper类,定义操作数据库的动作 建立mapper的xml文件,写具体 阅读详情

相关推荐

Java Spring Boot 入门:开启高效开发之旅

Spring Boot 是一个基于 Spring 框架的开源项目,旨在通过自动化配置和内嵌服务器来简化 Spring 应用的初始搭建和开发过程。它提供了大量的开箱即用功能,使得开发者可以更加专注于业务逻辑的实现,从而提高开发效率。通过上述步骤,你已经成功创建了一个简单的 Spring Boot 应用。当然,这只是一个开始,Spring Boot 还有大量的功能等待你去探索。官方文档:阅读 Spring Boot 官方文档(),了解更详细的内容和高级特性。实践练习。

JID007的博客 1515

Spring Boot 入门

SpringBoot是Spring框架的一个模块,旨在简化Spring应用的初始搭建以及开发过程。它通过提供默认配置和自动配置功能,使得开发者可以快速地创建独立的、生产级别的Spring应用程序,而无需进行繁琐的配置。看到这里,你已经了解了SpringBoot的基本概念、它与SpringMVC、Spring和SpringCloud之间的关系,以及为什么学习SpringBoot是如此重要。

Broken_x的博客 1629

Spring Boot入门篇 | Spring Boot 1

一、什么是Spring Boot Spring Boot 是由 Pivotal 团队提供的全新框架,其设计目的是用来简化新 Spring 应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。用我的话来理解,就是 Spring Boot 其实不是什么新的框架,它默认配置了很多框架的使用方式,就像 Maven 整合了所有的 Jar 包,Spring ...

学Java,找哪吒 2万+

Spring Boot入门案例

这里写自定义目录标题欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入 欢迎使用Markdown编辑器 你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Mar

weixin_45054136的博客 908

Spring Boot框架学习 - Spring Boot入门程序

一、springboot 入门(Spring Boot 2.6.2) 1、检查环境 Spring Boot 2.6.2 需要 Java 8,并且兼容 Java 17(包括 Java 17)。还需要 Spring Framework 5.3.14 或更高版本。 为以下构建工具提供了显式构建支持: 在我们开始之前,打开一个终端并运行以下命令以确保您安装了有效版本的 Java 和 Maven: $ java -version java version "1.8.0_102" Java(TM) SE Runtim

TyuIn的博客 369

惯性导航原理(九)-INS的初始对准-初始姿态确定+双矢量定姿

文章目录INS的初始对准INS初始化静基座/静态粗对准静态粗对准—加速度计调平原理加速度计调平静态粗对准—陀螺罗盘思考初始对准的影响因素双矢量定姿原理静态解析粗对准—双矢量定姿静态解析粗对准(续)其它初始对准方法精对准动对准 INS的初始对准 INS的初始对准为初始化的一部分 INS初始化 初始位置: 给定(INS没有初始位置确定的能力,例如从GPS ) 初始速度: 零(静止状态)或给定 初始姿态: 初始对准(INS有能力自己测资态) 粗对准vs. 精对准 静止状态vs. 运动状态 重要性: 失之毫厘,谬

十八与她的博客 1万+

Spring Boot 入门笔记

Spring Boot 入门 Build systems: Maven | Gradle | Ant | Starter POMs Best practices: Code Structure | @Configuration | @EnableAutoConfiguration | Beans and Dependency Injection Running your code: IDE | Pa

要坚持,要认真。 5618

微信小程序推送微信服务号模板消息

微信小程序中发送微信服务号模板消息,无需用户手动确认订阅,无需绑定开放平台,无需使用UnionId。

qq_20751269的博客 1556

【Spring Boot】从入门到放弃【基础篇】

要想学习Spring Boot你需要拥有相应的Spring框架使用经验和Maven的使用:Spring教程 文章目录基础篇一、Spring Boot 入门简介:特点:微服务简介maven配置(在maven安装目录conf文件夹下配置setting.xml)HelloWorld入门程序HelloWorld探究二、Spring Boot 配置三、Spring Boot 与日志四、Spring Boot...

qq_40181435的博客 1632

DIY电磁炉核心驱动方案:IR2153PBF自振荡半桥芯片实战指南(附电路图)

本文详细介绍了IR2153PBF自振荡半桥驱动芯片在DIY电磁炉核心驱动方案中的实战应用。该芯片集成了振荡器与600V高压驱动能力,仅需少量外围元件即可生成互补带死区的PWM信号,极大简化了半桥逆变电路设计。文章深入解析了其工作原理、关键参数,并提供了完整的电路设计、PCB布局指南及调试步骤,帮助电子爱好者构建稳定高效的感应加热驱动核心。

beer8的博客 576

从零构建腾讯滑块验证码破解引擎:逆向工程与实战对抗

本文深入解析腾讯滑块验证码(原天御验证码)的防护机制,包括环境感知层、行为分析层和验证决策层的核心技术。通过JSVMP虚拟机保护、轨迹验证算法和动态加密体系,腾讯验证码实现了高效的人机识别。文章还提供了安全研究实践指南,涵盖环境模拟和验证码识别方案,并探讨了防御对抗的演进趋势与合规研究建议。

rl6adventurer的博客 827

Spring Boot开发入门

Spring Boot开发入门Spring Boot概述SpringBoot入门程序使用Maven方式构建Spring Boot项目1.初始化IDEA配置创建Maven项目添加Spring Boot相关依赖编写主程序启动类创建一个用于Web访问的Controller运行项目 Spring Boot概述 Spring Boot框架本身并不提供Spring框架的核心特性以及拓展功能,只是用于快速 敏捷的开发新一代基于Spring框架的应用。 SpringBoot的优点 (1)可快速构建独立的Spring应用 (

qq_50834939的博客 1079

【动态导通电阻】p-GaN HEMTs正向和反向导通下的动态导通电阻

2024年,浙江大学的研究团队通过多组双脉冲测试方法,深入研究了两种商用p-GaN栅极HEMTs在正向和反向导通模式下的动态导通电阻(RON)特性。研究发现,肖特基型p-GaN栅极HEMTs在反向导通时动态RON比正向导通高3%-5%,而混合漏极嵌入栅注入晶体管在反向导通时动态RON降级较轻,降低约10%。此外,随着漏极电流(IDS)的增加,两种器件在反向导通时动态RON先减小后增加,形成“谷底”现象。

荷塘阅色 825

Spring boot项目搭建入门

Spring boot项目搭建入门,包含项目从构建到添加各种常用依赖

LGL的专栏 1万+

强化学习:从经典强化学习理解强化学习

1. 背景介绍 强化学习(Reinforcement Learning,RL)作为机器学习领域的重要分支,近年来取得了长足的进步。其核心思想是让智能体通过与环境的交互学习最优策略,从而最大化累积奖励。不同于监督学习和非监督学习,强化学习无需预先标注数据,而是通过试错的方式逐步学习,具有更强的适应性和泛化能力。

AI架构师小马 1798

全局注意机制 GAM | Global Attention Mechanism: Retain Information to Enhance Channel-Spatial Interactions

全局注意机制 GAM

Coding... 2573

Spring Boot3快速入门

本文手把手教你使用Spring Boot3构建第一个Web应用,详解项目创建、依赖配置到自动部署全流程。对比传统Spring MVC项目,展示Spring Boot开箱即用特性,并通过三种脚手架工具(官方/阿里/IDEA)演示项目快速生成,最后深入解析可执行JAR包原理与灵活配置技巧。

m0_73941339的博客 2205

YOLO11改进:轻量级改进 | 通用倒瓶颈(UIB)搜索块结合C3k2二次创新 | 轻量化之王MobileNetV4

通用倒瓶颈(UIB)搜索块替代YOLO11的C3k2

会AI的学姐 292

Spring Boot入门(一)从HelloWorld开始

Spring Boot 入门(一) 一、Spring Boot 介绍 1.如果使用 Spring 开发一个"HelloWorld"的 web 应用: 1) 创建一个 web 项目并且导入相关 jar 包。SpringMVC Servlet 2)创建一个 web.xml 3) 编写一个控制类(Controller) 4)需要一个部署 web 应用的服务器 如 tomcat 2、Spring Boot 特点: 1).Spring Boot 设计目的是用来简化新 Spring 应用的初始搭建以及开发过

m0_38075227的博客 251

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

Spring Boot - 精简版 - 一、 Spring Boot 入门

一、 Spring Boot 入门 1、 Spring Boot 简介 简化Spring应用开发的一个框架; 优点 快熟创建独立运行的Spring项目以及与主流框架及集成 使用嵌入式框架Servlet容器,应用无需打包成war包 starters自动依赖于版本控制 大量的自动配置,简化开发,也可修改默认值 无需配置 xml , 无代码生成,开箱即用 准生产环境的运行时应用监控 与云计算的天然集...

LawssssCat的博客 869

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Spring Boot 入门学习

Spring Cloud 是一系列框架的集合,它构建在 Spring Boot 之上,用于快速构建分布式系统中的各种组件和微服务架构,为开发者提供了一套一站式的解决方案,涵盖了服务治理、配置管理、消息总线、负载均衡、断路器等多个领域Nacos 是一个易于使用的动态服务发现、配置管理和服务管理平台。背景与发展:Nacos 是由阿里巴巴开源的项目,旨在为微服务架构提供服务发现、配置管理和服务治理等功能,帮助开发人员更轻松地构建、管理和扩展微服务应用程序。核心功能服务发现与注册。

2401_88165388的博客 1200

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

上一篇: MySQL性能优化——参数配置
下一篇: Spring Boot配置
Future_LL
博客等级 码龄9年 215粉丝 255原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值