87.【SpringBoot-01】(一)

简介: 87.【SpringBoot-01】


(一)、前面回顾

1.什么是Spring

BootStrap官网


http://www.bootstrapmb.com/

https://fanlychie.github.io/post/thymeleaf.html

全局查找:ctrl+f 在本类中进行查找某个方法/属性

shift+shift 在整个idea中搜索某个类

Spring 是一个开源框架,2003年兴起的一个轻量级的java开发框架。

Spring是为了解决企业级应用开发的复杂性创建的 简化开发

2.Spring 是如何简化Java开发的

为了降低Java开发的复杂性,Spring 有如下四种关键策略

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

(二)、什么是SpringBoot

1.基本含义:

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者

2.Spring Boot的主要优点

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

(三)、微服务

1.什么是微服务

微服务是一种架构风格,他要求我们在开发一个应用的时候,这个应用必须构建一些列小服务的组合,可以通过http的方式进行互通,要说微服务架构,先得说说过去我们的单体应用架构。

2.单体应用架构

所谓单体应用架构是指: 我们将一个应用的中的所有应用服务都封装在一个应用中。

无论是ERP、CRM或则是其他什么系统,都把数据库访问,web访问,等等各个功能都封装在一个war包内

-⭐ 这样做的好处,易于开发和测试;也十分方便部署;当需要拓展时,只需要将war复制多份,然后放到服务器上,再做个负载均衡就可以了。

-⭐ 单体用用架构的缺点是: 哪怕我要修改一个非常小的地方,我都需要停掉整个服务,重新打包,部署到整个应用的war包,特别是对于一个大型应用,我们不可能把所有内容都放在一个应用里面,我们如何维护,如何分工都是问题。

3.微服务架构 (活字印刷)

all in one 的架构方式,我们把所有的功能单元放在一个应用里面。然后我们把整个应用部署到服务器上。如果负载能力不行,我们将整个应用进行水平复制,进行扩展,然后再负载均衡。

所谓微服务架构,就是打破之前 all in one 的架构方式,把每个功能元素独立出来。把每个功能元素独立出来。独立出来的功能元素的动态组合,需要的功能才去拿来组合,需要多一些时可以整合多个功能元素,所以微服务架构是对功能元素进行复制,而没有对整个应用进行复制。

这样做的好处:

  1. ⭐节省了调用资源
    2 . ⭐ 每个功能元素都是一个可替换的、可独立升级的软件代码

程序核心:高内聚(在划分模块时,要把功能关系紧密的放到一个模块中)

低耦合(模块之间的联系越少越好,接口越简单越好)

论文地址:https://martinfowler.com/articles/microservices.html#CharacteristicsOfAMicroserviceArchitecture

4.如何构建微服务

一个大型系统的微服务架构,就像一个复杂交织的神经网络,每一个神经元就是一个功能元素,它们各自完成自己的功能,然后通过http相互请求调用。比如一个电商系统,查缓存、连接数据库、浏览页面、结账、支付宝等服务都是一个独立的功能服务,都被微化了作为一个微服务共同构建了一个庞大的系统。如果修改其中的一个功能,只需要更新升级其中一个功能服务单元即可。

但是这种庞大的架构给部署和运维带来了很大的难度。于是,Spring为我们带来了构建大型分布式微服务的全套产品。

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

(四)、第一个SpringBoot程序

https://springref.com/

  • 内嵌了Tomcat,我们不需要配置Tomcat
  • 业务层等 我们需要放在与主入口类的同级目录下

1.点击新建文件

2.勾选web框架

我们这里的版本要用: 2.7.7 jdk用1.8 java版本用8

3.进行测试 测试成功

测试控制台

测试Tomcat

5.程序的主入口 (①)

这里是程序的主入口,不能删除

package com.example.springboot01hello;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
//本身就是一个SPring程序
//  程序的主入口
@SpringBootApplication
public class SpringBoot01HelloApplication {
    public static void main(String[] args) {
        SpringApplication.run(SpringBoot01HelloApplication.class, args);
        System.out.println("你好 吉士先生");
    }
}

6.Pom的配置文件 (②)

  • 继承了一个父项目
  • 显示jdk版本信息
  • web 依赖、单元测试
  • 打包插件
<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>
<!--  他有一个父项目  -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.7.7</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>
    <groupId>com.example</groupId>
    <artifactId>SpringBoot-01-hello</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>SpringBoot-01-hello</name>
    <description>Demo project for Spring Boot</description>
    <properties>
        <java.version>1.8</java.version>
    </properties>
    <dependencies>
<!--      web 依赖:  tomcat dispatcherServlet xml...  -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
<!--     单元测试   -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>
<!--   打包插件-->
    <build>
        <plugins>
            <plugin>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-maven-plugin</artifactId>
            </plugin>
        </plugins>
    </build>
</project>

7.测试Controller(③)

必须在程序入口的同级目录下

package com.example.springboot01hello.controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HellController {
//  实现了自动装配
    @RequestMapping("/hello")
    public String hello(){
//        调用业务,接受前端的参数
        return "Hello world";
    }
}

8.测试打包

(五)、SpringBoot 彩蛋 (banner)

https://www.bootschool.net/ascii-art

//                          _ooOoo_                               //
//                         o8888888o                              //
//                         88" . "88                              //
//                         (| ^_^ |)                              //
//                         O\  =  /O                              //
//                      ____/`---'\____                           //
//                    .'  \\|     |//  `.                         //
//                   /  \\|||  :  |||//  \                        //
//                  /  _||||| -:- |||||-  \                       //
//                  |   | \\\  -  /// |   |                       //
//                  | \_|  ''\---/''  |   |                       //
//                  \  .-\__  `-`  ___/-. /                       //
//                ___`. .'  /--.--\  `. . ___                     //
//              ."" '<  `.___\_<|>_/___.'  >'"".                  //
//            | | :  `- \`.;`\ _ /`;.`/ - ` : | |                 //
//            \  \ `-.   \_ __\ /__ _/   .-` /  /                 //
//      ========`-.____`-.___\_____/___.-`____.-'========         //
//                           `=---='                              //
//      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^        //
//           佛祖保佑     吉士先生     永不宕机      永无BUG            //

1.在resource目录下创建一个banner.txt


相关文章
|
负载均衡 监控 Dubbo
91.【SpringBoot-03】(二)
91.【SpringBoot-03】
75 0
|
存储 缓存 安全
89.【SpringBoot-02】(六)
89.【SpringBoot-02】
55 0
|
Dubbo Java 应用服务中间件
91.【SpringBoot-03】(四)
91.【SpringBoot-03】
65 0
|
4月前
|
XML Java 数据格式
SpringBoot详解
SpringBoot详解
41 0
|
6月前
|
JSON Java 应用服务中间件
SpringBoot
SpringBoot
28 1
|
安全 前端开发 Java
89.【SpringBoot-02】(五)
89.【SpringBoot-02】
62 0
|
安全 前端开发 数据安全/隐私保护
89.【SpringBoot-02】(十)
89.【SpringBoot-02】
41 0
|
监控 druid Java
89.【SpringBoot-02】(二)
89.【SpringBoot-02】
62 0
|
Java
87.【SpringBoot-01】(九)
87.【SpringBoot-01】
72 0