ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Springboot

2022-07-22 20:02:04  阅读:103  来源: 互联网

标签:Springboot 框架 Spring Boot 应用 org SpringBoot


一、现学习规划

Springboot

概念介绍:全新框架,简化Spring应用的初始搭建以及开发过程

Springboot核心:自动装配

微服务阶段

javase:OOP

mysql:持久化

html+css+js+jquery+框架:视图,框架不熟练,css不好;

javaweb:独立开发MVC三层架构的网站了:原始

ssm:企业级框架:简化了我们的开发流程,配置也开始较为复杂

war:tomcat运行

715348851

spring再简化:SpringBoot-jar:内嵌tomcat;微服务架构!

路线图

image

二、Spring Boot概念

1.回顾

1.1、什么是Spring?

Spring是一个开源框架,2003年兴起的一个轻量级的Java开发框架,作者: Rod Johnson (音乐学博士)。

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

1.2、Spring是如何简化Java开发的?主要是AOP、IOC

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

1、基于POJO的轻量级和最小侵入性编程;

2、通过IOC,依赖注入(DI)和面向接口实现松耦合;

3、基于切面(AOP)和惯例进行声明式编程;

4、通过切面和模版减少样式代码;

1.3、什么是SpringBoot

​ 学过javaweb的同学就知道,开发一个web应用,从最初开始接触Servlet结合Tomcat,跑出一个Hello Wolrld程序,是要经历特别多的步骤;后来就用了框架Struts,再后来是SpringMVC,到了现在的SpringBoot。什么是SpringBoot呢,就是一个javaweb的开发框架,和SpringMVC类似,对比其他javaweb框架的好处,官方说是简化开发,约定大于配置, you can "just run",能迅速的开发web应用,几行代码开发一个http接口。

​ Spring Boot基于Spring 开发,Spirng Boot本身并不提供Spring框架的核心特性以及扩展功能,只是用于快速、敏捷地开发新一代基于Spring框架的应用程序。也就是说,它并不是用来替代Spring 的解决方案,而是和Spring框架紧密结合用于提升Spring开发者体验的工具。SpringBoot以约定大于配置的核心思想,默认帮我们进行了很多设置,多数Spring Boot应用只需要很少的Spring 配置。同时它集成了大晨常用的第三方库配置(例如 Redis、MongoDB、Jpa、RabbitMQ、Quartz等等),Spring Boot应用中这些第三方库几乎可以零配置的开箱即用

​ 简单来说就是SpringBoot其实不是什么新的框架,它默认配置了很多框架的使用方式,就像maven整合了所有的jar包, spring boot整合了所有的框架。Spring Boot出生名门,从一开始就站在一个比较高的起点,又经过这几年的发展,生态足够完善,Spring Boot已经当之无愧成为Java领域最热门的技术。

Spring Boot的主要优点:

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

1.4、Spring Boot和Spring的对比

Spring程序缺点

  • 依赖设置繁琐
  • 配置繁琐

SpringBoot程序优点

  • 起步依赖(简化依赖配置)
  • 自动配置(简化常用工程相关配置)
  • 辅助功能(内置服务器,...)

三、微服务概念

业务:service :userService ==>模块!

springMVC,contrller ==>提供接口!

3.1、什么是微服务?

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

3.2、单体应用架构

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

​ 无论是ERP、CRM或是其他什么系统,你都把数据库访问,web访问,等等各个功能放到一个war包内。

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

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

3.2、微服务架构

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

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

优点

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

四、第一个SpringBoot程序

4.1、配置

  • jdk:1.8
  • Maven:3.6.5
  • springboot:最新版

应用:IDEA

官方:一个快速生成的网站!下载后导入

IDEA:直接新建项目即可

4.2、相关更改

更改端口号:

#更改端接口号
server.port=8081

image

更改banner.txt

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

image

五、原理初探

自动配置:

1、pom.xml

  • spring-boot-dependencies:核心依赖在父工程中!
  • 我们在引入依赖的时候,不需要指定版本,SpringBoot具有版本仓库

parent

  1. 开发SpringBoot程序要继承spring-boot-starter-parent
  2. spring-boot-starter-parent中定义了若干个依赖管理
  3. 继承parent模块可以避免多个依赖使用相同技术时出现依赖版本冲突
  4. 继承parent的形式也可以采用引入依赖的形式实现效果

stater

SpringBoot中常见项目名称,定义了当前项目使用的所有依赖坐标,以达到减少依赖配置的目的

2、启动器

<!--启动器-->
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter</artifactId>
</dependency>

3、主程序

package com.aaron;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;


/**
 * @author Administrator
 * 程序的主入口:不可删改
 * 本身就是Spring的一个组件
 */
@SpringBootApplication
public class HelloSpringBootApplication {

    public static void main(String[] args) {
        SpringApplication.run(HelloSpringBootApplication.class, args);//相当于一个容器
    }

}

SpringBoot的引导类是Boot工程的执行入口,运行main方法就可以启动项目

SpringBoot工程运行后初始化Spring容器,扫描引导类所在包加载bean

4、辅助功能

  1. 内嵌Tomcat服务器是SpringBoot辅助功能之一,另外还有jetty(相对更加轻量,但是负载型远不及tomcat)、undertow(负载型勉强跑赢tomcat)
  2. 内嵌Tomcat工作原理是将Tomcat服务器作为对象运行,并将该对象交给spring容器管理
  3. 变更内嵌服务器思想是去除现有服务器,添加全新的服务器

六、REST风格

6.1、REST简介

​ REST是(Representational State Transfer)的缩写,表现形式状态的转换,即资源的访问格式

6.2、表现形式

http: //localhost/user/1
http: //localhost/user

优点:隐藏资源的访问行为,无法通过地址得知对资源是何种操作、书写简化!

image

查询:GET

添加:POST

修改:PUT

删除:DELETE

约定大于配置

七、Windows端口

image

八、常量单位

image

image

转换语法规则

image

密码尽量用双引号,避免识别错误

九、加载测试专有属性

1、properties

在启动测试环境时可以通过properties参数设置测试环境专用的属性

image

优势:比多环境开发中的测试环境影响范围更小,仅对当前测试类有效

2、args

在启动测试环境时可以通过args参数设置测试环境专用的传入参数

image

3、测试类中启动web服务器

image

image

4、虚拟调用(AutoConfigureMockMvc)

image

image

5、匹配相应执行状态

image

6、业务层事务回滚

image

7、随机测试数据

image

8、内嵌数据库

image

十、Redis

1、安装运行

image

启动命令行小BUG:

image

image

2、基本用法

image

image

1.字符串

image

2.哈希

image

3.列表list(可重复,队列)

image

4.set无序集合

image

image

3、整合

先导入包、同时cmd启动Redis

package com.aaron;

import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;

@SpringBootTest
class Springboot10RedisApplicationTests {

  @Autowired(required = false)
  private RedisTemplate redisTemplate;
  @Test
  void SetRedisTemplate() {
    ValueOperations valueOperations = redisTemplate.opsForValue();
    valueOperations.set("age",22);
  }

  @Test
  void GetRedisTemplate() {
    ValueOperations valueOperations = redisTemplate.opsForValue();
    Object age = valueOperations.get("age");
    System.out.println(age);
  }

  @Test
  void HSetRedisTemplate() {
    HashOperations hashOperations = redisTemplate.opsForHash();
    hashOperations.put("info","a","aa");
    hashOperations.put("info","a1","a123");
  }

  @Test
  void HGetRedisTemplate() {
    HashOperations hashOperations = redisTemplate.opsForHash();
    Object o = hashOperations.get("info", "a");
    Object o1 = hashOperations.get("info", "a1");
    System.out.println(o);
    System.out.println(o1);
  }
}

4、使用

image

image

image

十一、MongoDB

概念:MongoDB是一个开源、高性能、无模式的文档型数据库。NoSQL数据库产品中的一种,是最像关系型数据库的非关系型数据库

1、应用场景

image

image

image

十二、缓存

缓存是一种介于数据永久存储介质与数据应用之间的数据临时存储介质

使用缓存可以有效的减少低速数据读取过程的次数(例如磁盘IO),提高系统性能

标签:Springboot,框架,Spring,Boot,应用,org,SpringBoot
来源: https://www.cnblogs.com/Alaskaboo/p/16507866.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有