当前位置: 首页 > news >正文

springBoot2.3-基本介绍及入门案例

        本次学习雷丰阳springBoot(2.3版本)。建议先修ssm

一、SpringBoot基本介绍

        springBoot是当今最为流行的java开发框架。

        1、springBoot的底层是spring, 因此继承了spring的粘合其他框架的能力。

        2、本质上还是其他框架包括spring在工作 , springBoot起到一个整合其他框架,简化开发及配置的作用。

        3、springBoot高度的自动化,必定带来灵活度差的问题,所以需要在理解学习过目标框架(比如springMVC,myBatis)之后,在springBoot中做个性化的配置。

        

        

        spingBoot官网文档地址Spring Boot Reference Documentation , 官方文档中含有入门demo简述,一切用法。  

        出新版本,可以借助官方文档自学

        // springBoot版本迭代更新超快,需要随时关注大的版本变化

        //例如2.3升级到2.4,需要关注。 大的版本迭代

        //例如2.x升级到3.x 需要重点关注

二、SpringBoot的优点

  • Create stand-alone Spring applications
    • 创建独立Spring应用
  • Embed Tomcat, Jetty or Undertow directly (no need to deploy WAR files)
    • 内嵌web服务器
    • //内置了Tomcat方便使用
  • Provide opinionated 'starter' dependencies to simplify your build configuration
    • 自动starter依赖,简化构建配置 
    • //springBoot的重要优点之一 , 我们选择了 webStart(网站开发场景)之后,它自动帮我们配置好 jar包, 并保证各个包的版本是可以协作的,省去了我们自己去一个个找jar包的烦恼。
  • Automatically configure Spring and 3rd party libraries whenever possible
    • 自动配置Spring以及第三方功能
    • //例如web开发,springBoot可以自动帮配置好 ssm 的三个配置文件,以及自动整合,还有配置web开发常用的功能
  • Provide production-ready features such as metrics, health checks, and externalized configuration
    • 提供生产级别的监控、健康检查及外部化配置
    • //方便的运维管理
  • Absolutely no code generation and no requirement for XML configuration
    • 无代码生成、无需编写XML

                spring5引入了响应式编程技术栈 reacticve stack 

三、时代背景 

3.1微服务

        将一个大型业务系统进行拆分,每个业务独立部署到服务器,各个业务间相互调用

3.2分布式

        由于业务之间独立部署,于是整个系统就变为了一个分布式的网络拓扑。产生一下问题

分布式的困难

  • 远程调用
  • 服务发现
  • 负载均衡
  • 服务容错
  • 配置管理
  • 服务监控
  • 链路追踪
  • 日志管理
  • 任务调度
  • ......

        分布式解决方案之一 , 即 springBoot + springCloud

3.3云原生

四、入门案例

        

0、系统要求

  • Java 8 & 兼容java14 .
  • Maven 3.3+
  • idea 2019.1.2+

1、创建一个java的MAVEN工程

2、配置pom.xml文件,继承父工程,引入场景

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>org.example</groupId><artifactId>springBootHello</artifactId><version>1.0-SNAPSHOT</version><properties><maven.compiler.source>11</maven.compiler.source><maven.compiler.target>11</maven.compiler.target><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding></properties>
<!--继承父工程-->
<!--    固定写法,表示该项目使用了springBoot--><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.3.4.RELEASE</version></parent><!--添加web场景-->
<!--    springBoot会自动管理依赖,并自动配置--><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies></project>

3、创建主程序(固定写法,springBoot从这里启动,相当于java中的main()方法)

// 声明Spring Boot应用的主类,springBoot从这里启动
@SpringBootApplication
public class MainApplication {public static void main(String[] args) {// 启动Spring Boot应用SpringApplication.run(MainApplication.class, args);}
}

4、编写业务 (默认配置的spring只会scan主程序所在的包下的注解)

@RestController
// @RestController封装了@Controller和@ResponseBody(代表直接返回给浏览器,而不是要跳转页面)两个注解
public class HelloController {@RequestMapping(value = "/hello")public String hello() {return "Hello, World!"; // 返回给前端的数据}
}

5、测试

 直接运行main方法,访问 localhost:8080/hello

五、简化配置

        在resource包下, 新建application.properties (不要写错)

        该文件可以配置你项目中的所有框架使用的配置信息,具体可在官方文档查看

        Common Application Properties

        配置  server.port=8888  //即配tomcat的端口号

        

六、简化部署       

        在pom.xml中配置这个插件,

即可以在打包时帮我们封装好各种jar,tomcat 的jar包(也叫fat jars).

可以拷贝到服务器,使用cmd  执行这个jar包即可。(即项目发布)

注意点:

  • 取消掉cmd的快速编辑模式

   <build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build>

 

相关文章:

  • CDH 6.3.2集成flink 1.18 zookeeper版本不匹配Flink-yarn启动失败
  • 通信原理课设(gec6818) 007:语音识别
  • 【算法题】30. 串联所有单词的子串
  • 如何使用ArcGIS Pro将Excel表转换为SHP文件
  • 14.用户管理
  • CentOS 5/6/7 基于开源项目制作openssh 9.6p1 rpm包—— 筑梦之路
  • 小程序wx:if 和hidden的区别?
  • Spring Data Redis对象缓存序列化问题
  • K8S Helm 安装ingress-nginx/ingress-nginx
  • 阿里云ECS云服务器优势整理(共9点)
  • LabVIEW在大型风电机组状态监测系统开发中的应用
  • 视频格式网络地址转换视频到本地,获取封面、时长,其他格式转换成mp4
  • 每日一题——LeetCode976
  • Python 下载与安装
  • C#,入门教程(01)—— Visual Studio 2022 免费安装的详细图文与动画教程
  • Java教程_软件开发基础
  • mongodb--安装和初步使用教程
  • MySQL Access denied for user 'root'@'localhost' 解决方法
  • Object.assign方法不能实现深复制
  • Spark学习笔记之相关记录
  • springboot_database项目介绍
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • windows下如何用phpstorm同步测试服务器
  • 电商搜索引擎的架构设计和性能优化
  • 给Prometheus造假数据的方法
  • 机器学习 vs. 深度学习
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # Maven错误Error executing Maven
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (3)选择元素——(14)接触DOM元素(Accessing DOM elements)
  • (3)选择元素——(17)练习(Exercises)
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (二)pulsar安装在独立的docker中,python测试
  • (转)Linq学习笔记
  • (转)大道至简,职场上做人做事做管理
  • (轉貼) UML中文FAQ (OO) (UML)
  • .[hudsonL@cock.li].mkp勒索加密数据库完美恢复---惜分飞
  • .【机器学习】隐马尔可夫模型(Hidden Markov Model,HMM)
  • .htaccess 强制https 单独排除某个目录
  • .net CHARTING图表控件下载地址
  • .NET I/O 学习笔记:对文件和目录进行解压缩操作
  • .net 使用ajax控件后如何调用前端脚本
  • .NET/C# 使窗口永不激活(No Activate 永不获得焦点)
  • .NET学习全景图
  • /run/containerd/containerd.sock connect: connection refused
  • [ vulhub漏洞复现篇 ] ThinkPHP 5.0.23-Rce
  • [20170705]lsnrctl status LISTENER_SCAN1
  • [ABP实战开源项目]---ABP实时服务-通知系统.发布模式
  • [Angular] 笔记 9:list/detail 页面以及@Output
  • [BZOJ4337][BJOI2015]树的同构(树的最小表示法)
  • [codeforces] 25E Test || hash
  • [Docker]六.Docker自动部署nodejs以及golang项目
  • [element-ui] el-dialog 中的内容没有预先加载,因此无法获得内部元素的ref 的解决方案
  • [EWS]查找 文件夹
  • [FTP]pureftp部署和优化