SpringBoot-01-快速入门

SpringBoot

1. 快速入门

什么是Spring

  • 轻量级的Java开源开发框架
  • 为了解决企业级应用开发的复杂性而创建的,简化开发

Spring是如何简化Java开发的

​ 为了降低Java开发的复杂性,Spring采用4种关键策略:

  1. 基于POJO的轻量级和最小侵入性编程;
  2. 通过IOC,依赖注入(DI)和面向接口实现松耦合;
  3. 基于切面(AOP)和惯例进行声明式编程;
  4. 通过切面和模板减少样式代码;

什么是SpringBoot

​ SpringBoot就是一个JavaWeb的开发框架,和SpringMVC类似,对比其他框架的好处是简化开发约定大于配置,能迅速的开发web应用,几行代码就可以开发一个http接口。

​ 所有的技术框架的发展都遵循一条主线:一个复杂应用场景->一种规范框架(只需配置)->重构轻量级框架->开始提倡"约定大于配置",衍生出一些一站式的解决方案。

​ 这就是:Java企业级应用->J2EE->spring->springBoot的过程。

​ 随着Spring不断发展,项目整合开发需要配置各种文件,逐渐向“配置地狱”演变。SpringBoot就是在这个背景下被抽象出来的开发框架,目的就是为了更容易的使用Spring、更容易的集成各种常用的中间件、开源软件。

​ SpringBoot基于Spring开发,本身不提供扩展功能,只是用于快速开发新一代基于Spring框架的应用程序。开箱即用!

SpringBoot的主要优点:

  • 为所有Spring开发者更快的入门
  • 开箱即用,提供各种默认配置来简化项目配置
  • 内嵌式容器简化Web项目
  • 没有冗余代码生成和XML配置的要求

1.1 微服务

什么是微服务?

​ 微服务是一种架构风格,它要求我们在开发一个应用的时候,这个应用构建成一系列小服务的组合;可以通过http的方式互通。过去是 单体应用架构。

单体应用架构

​ 单体应用架构(all in one)是指,所有应用服务都封装在一个应用中。

​ 无论是ERP、CRM,你都把数据库访问,web访问等功能放在一个war包内。

  • 这样的好处是,易于开发和测试;需要扩展时,只需要将war复制多份,放到多个服务器上,再做个负载均衡就可以了。
  • 缺点是,哪怕修改一个小地方,都需要停掉整个服务,重新打包、部署war包。

微服务架构

​ 所谓微服务架构,就是把每个功能元素独立出来。把独立出来的功能元素动态组合,即对功能元素进行复制,而没有对整个应用进行复制。

​ 好处有:

  1. 节约了调用资源
  2. 每个功能元素的服务都是一个可替换的、可独立升级的软件代码
在这里插入图片描述

如何构建微服务

​ spring为我们带来了构建大型分布式微服务的全套、全程产品:

  • 构建一个个功能独立的微服务应用单元,可以使用SpringBoot,可以帮我们快速构建一个应用;
  • 大型分布式网络服务的调用,这部分由springcloud来完成,实现分布式;
  • 在分布式中间,进行流式数据计算、批处理,我们用spring cloud data flow
  • spring为我们想清楚了整个从开始构建应用到大型分布式应用全流程方案;

1.2 HelloWorld

准备工作:

环境准备:

  • jdk1.8
  • maven-3.6.1
  • springboot 最新版(2.3.2)
  • IDEA

创建基础项目

官方提供了一个快速生成的网站:Spring Initializr!(IDEA集成了这个网站)

  • 可以在官网直接下载后,导入idea开发(官网在哪)
  • 直接使用idea创建一个springboot项目(开发常用方式)

【目标一:使用Spring Initializr页面创建项目】

步骤:

  1. 打开Spring Initializr

  2. 填写项目信息

    在这里插入图片描述
  1. 点击“Generate Project”生成项目,下载此项目

  2. 解压项目包,并以Maven项目导入IDEA

  3. 第一次打开,速度会比较慢,需要下载的依赖很多

项目结构分析

​ 通过上面步骤完成了基础项目的创建,就会自动生成以下文件:

  • 程序的主程序类
  • 一个application.properties配置文件
  • 一个测试类

pom.xml分析

​ 打开pom.xml,查看Spring Boot项目的依赖,主要有四个部分:

  • 项目元数据信息:包括groupId、artifactId、name、description;
  • parent:继承spring-boot-starter-parent的依赖管理,控制版本和打包等内容;
  • dependencies:项目依赖,包含以下内容
    • spring-boot-starter-web:实现HTTP接口(包含SPringMVC),官网对它的描述:使用SpringMVC构建Web应用程序的入门者,使用Tomcat作为默认嵌入式容器
    • spring-boot-starter-test:用于编写单元测试的依赖包
  • build:构建配置部分。默认使用了spring-boot-maven-plugin,配合spring-boot-starter-parent就可以把SpringBoot应用打包成JAR来直接运行。

编写HTTP接口

  1. 在主程序的同级目录下,新建一个controller包

    [图片上传失败...(image-d8d839-1600418970462)]

  1. 在包中新建一个Controller类

     //核心:自动装配 原理!!!
    @RestController
    public class HelloController {
    
        //接口:http://localhost:8080/hello
        @RequestMapping("/hello")
        public String hello() {
            //调用业务,接收前端的参数
            return "hello,world";
        }
    }
    
  2. 编写完毕后,在主程序中启动项目,浏览器发起请求,看界面返回;

    • 控制台输出了SpringBoot的banner
    • 控制条输出了Tomcat访问的端口号
    • 访问hello请求,字符串成功返回!
  3. 配置pom.xml,将项目打成jar包

    <distributionManagement>
        <repository>
            <id>proficio-repository</id>
            <name>Proficio Repository</name>
            <url>file://${basedir}/target/deploy</url>
        </repository>
    </distributionManagement>
    
    在这里插入图片描述
  1. 打成jar包后,就可以在任何地方运行了!

小结

​ 简单几步,就完成了一个web接口的开发,SpringBoot就是这么简单,所以我们常用它来建立微服务项目!

彩蛋

自定义启动banner图案(贼酷)

在resources下新建banner.txt即可,效果如下:

在这里插入图片描述
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 219,869评论 6 508
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,716评论 3 396
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 166,223评论 0 357
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,047评论 1 295
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,089评论 6 395
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,839评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,516评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,410评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,920评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,052评论 3 340
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,179评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,868评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,522评论 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,070评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,186评论 1 272
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,487评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,162评论 2 356

推荐阅读更多精彩内容