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. 填写项目信息

  3. 点击“Generate Project”生成项目,下载此项目

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

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

项目结构分析

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

  • 程序的主程序类
  • 一个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包

  2. 在包中新建一个Controller类

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

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

    <distributionManagement>
    <repository>
    <id>proficio-repository</id>
    <name>Proficio Repository</name>
    <url>file://${basedir}/target/deploy</url>
    </repository>
    </distributionManagement>

  5. 打成jar包后,就可以在任何地方运行了!

小结

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

彩蛋

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

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

SpringBoot-01-快速入门的更多相关文章

  1. 【原创】SpringBoot & SpringCloud 快速入门学习笔记(完整示例)

    [原创]SpringBoot & SpringCloud 快速入门学习笔记(完整示例) 1月前在系统的学习SpringBoot和SpringCloud,同时整理了快速入门示例,方便能针对每个知 ...

  2. SpringBoot开发快速入门

    SpringBoot开发快速入门 目录 一.Spring Boot 入门 1.Spring Boot 简介 2.微服务 3.环境准备 1.maven设置: 2.IDEA设置 4.Spring Boot ...

  3. SpringBoot介绍,快速入门小例子,目录结构,不同的启动方式,SpringBoot常用注解

    SpringBoot介绍 引言 为了使用ssm框架去开发,准备ssm框架的模板配置 为了Spring整合第三方框架,单独的去编写xml文件 导致ssm项目后期xml文件特别多,维护xml文件的成本也是 ...

  4. MyBatis 学习总结 01 快速入门

    本文测试源码下载地址: http://onl5wa4sd.bkt.clouddn.com/MyBatis0918.rar 一.Mybatis介绍 MyBatis是一个支持普通SQL查询,存储过程和高级 ...

  5. SpringBoot的快速入门

    快速创建一个SpringBoot项目(两种方式:STS版本,IntelliJ IDEA) 1.STS方式:什么是STS?是Spring团队推荐使用的开发工具 所谓的sts就是eclipse升级版 继承 ...

  6. 【SpringBoot】快速入门

    博客主页:准Java全栈开发工程师 00年出生,即将进入职场闯荡,目标赚钱,可能会有人觉得我格局小.觉得俗,但不得不承认这个世界已经不再是以一条线来分割的平面,而是围绕财富旋转的球面,成为有钱人不是为 ...

  7. SpringBoot简单快速入门操作

    项目类分为: dao层 server层 controller层 Mapper → Server→ controller mapper层(必须要用interface创建) 创建后,首先要在方法前加@Ma ...

  8. 01快速入门-04-Map、Set和iterable(ES6)

    1.Map 我们知道,在JS中其实对象的方式就跟Java中的Map极为相似,即键值对的方式.JS中,key必须是字符串,实际上Number等值作为key也是合理的,所以为了解决这个问题,在最新的ES6 ...

  9. [Android应用开发] 01.快速入门

    前言 这一篇,主要是把之前[安卓基础]系列的东西,做一个总结和补充.并举了两个例子:电话拨号器.短信发送器做巩固,在此也参考了黑马训练营的教学大纲. Android项目的目录结构 Activity:应 ...

  10. AngularJS快速入门指南01:导言

    AngularJS使用新的attributes扩展了HTML AngularJS对单页面应用的支持非常好(SPAs) AngularJS非常容易学习 现在就开始学习AngularJS吧! 关于本指南 ...

随机推荐

  1. 前端进阶必读:《JavaScript核心技术开发解密》核心提炼二

    前言 最近读勒基本关于前端的数据<JavaScript核心技术开发解密>,<webpack从入门到进阶>...这几本书帮助到我更好的理解JS.webpack在前端技术领域中的作 ...

  2. 笔记:安装VM Tools、vim编辑器、压缩包、Linux用户管理

    一.VM Tools安装 1.作用:方便我们在虚拟机和宿主机之间复制数据或移动文件等. 2.安装步骤: step1:在菜单栏找到虚拟机---->找到安装vm tools ,点击: step2:进 ...

  3. 手机APP无法抓包(无法连接服务器)

    一. 把证书放到系统信任区 前提:手机已root 详细步骤 计算证书名 openssl x509 -subject_hash_old -in charles-ssl-proxying-certific ...

  4. hook框架-frida简单使用模板以及frida相关接口

    一目录结构 ├── test.py #py脚本 └── test.js #js脚本 一.py脚本 test.py import frida import sys #连接设备app dev=frida. ...

  5. 认证授权:学习OAuth协议

    1.什么是OAuth协议? OAUTH协议为用户资源的授权提供了一个安全的.开放而又简易的标准.同时,任何第三方都可以使用OAuth认证服务,任何服务提供商都可以实现自身的OAuth认证服务,因而OA ...

  6. 使用Wasserstein GAN生成小狗图像

    一.前期学习经过 GAN(Generative Adversarial Nets)是生成对抗网络的简称,由生成器和判别器组成,在训练过程中通过生成器和判别器的相互对抗,来相互的促进.提高.最近一段时间 ...

  7. SpringCloud微服务项目实战 - API网关Gateway详解实现

    前面讲过zuul的网关实现,那为什么今天又要讲Spring Cloud Gateway呢?原因很简单.就是Spring Cloud已经放弃Netflix Zuul了.现在Spring Cloud中引用 ...

  8. Windows server 2008 搭建DNS服务

    现在用Windows搭建DNS的已经很少了,感觉也只有一些公司的某块部分能用上,最近在捣鼓这个,索性直接写下来,以后可以看了直接用. 开始: ★★★配置静态IP地址 老样子,有关服务器功能的建立,都是 ...

  9. 数据处理 | pandas入门专题——离散化与one-hot

    今天是pandas数据处理专题第7篇文章,可以点击上方专辑查看往期文章. 在上一篇文章当中我们介绍了对dataframe进行排序以及计算排名的一些方法,在今天的文章当中我们来了解一下dataframe ...

  10. 设计模式C++模板(Template)模式

    设计模式C++描述----02.模板(Template)模式(转载) 一. 问题 在面向对象系统的分析与设计过程中经常会遇到这样一种情况:对于某一个业务逻辑(算法实现)在不同的对象中有不同的细节实现, ...