SSM框架学习记录-SpringBoot_day01

news2024/10/1 9:36:46

1.SpringBoot简介

SpringBoot是用来简化Spring应用的初始搭建以及开发过程
先回顾一下SpringMVC的开发过程:

  • 创建工程,并在pom.xml配置文件中配置所依赖的坐标:
<dependencies>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>org.springframework</groupId>
        <artifactId>spring-webmvc</artifactId>
        <version>5.2.10.RELEASE</version>
    </dependency>
</dependencies>
  • 编写web3.0的配置类:
public class ServletContainersInitConfig extends AbstractAnnotationConfigDispatcherServletInitializer {
    protected Class<?>[] getRootConfigClasses() {
        return new Class[]{SpringConfig.class};
    }

    protected Class<?>[] getServletConfigClasses() {
        return new Class[]{SpringMvcConfig.class};
    }

    protected String[] getServletMappings() {
        return new String[]{"/"};
    }
}
  • 编写SpringMVC的配置类:
@Configuration
@ComponentScan("com.psj.controller")
public class SpringMvcConfig {}
  • 编写Controller类:
@Controller
public class UserController {
    @RequestMapping("/save")
    @ResponseBody
    public String save(){
        System.out.println("user save ...");
        return "{'info':'springmvc'}";
    }
}

可以看到前三步都是在搭建环境,基本固定,SpringBoot可对这三步进行简化


SpringBoot快速入门

代码参考SpringBoot_01_quickstart

开发步骤如下:

  • 创建新模块:

    • 打包方式需设置为jar
    • 创建好的工程中不需要创建配置类
    • 创建好的项目会自动生成其他的一些文件,可删除,如.mvn、.gitignore
  • 创建Controller

  • 启动服务器:运行工程不需要使用本地的Tomcat和插件,只运行项目Application类即可

在这里插入图片描述

前端开发人员要测试前端程序就需要后端开启服务器,为了摆脱这个受制,前端开发人员要在自己电脑上安装TomcatIdea然后启动程序。使用SpringBoot后可以将工程打成jar包,该包运行不依赖于TomcatIdea,如何打包?

  • 打包:构建SpringBoot工程时已在pom.xml中配置了插件(通过该插件才能打包为能直接启动的jar包,maven直接打成的jar包无法直接启动),点击package指令即可(默认打为jar包)
<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
  • 启动:前端人员进入jar包所在位置,在 命令提示符中输入命令即可启动项目
jar -jar SpringBoot_01_quickstart-0.0.1-SNAPSHOT.jar

SpringBoot概述

SpringBoot程序优点:

  • 自动配置:解决Spring程序配置繁琐的问题
  • 起步依赖:解决Spring程序依赖设置繁琐的问题
    • starter:定义了当前项目使用的所有项目坐标,以减少依赖配置
    • parent:所有SpringBoot项目要继承的项目,定义了若干个坐标版本号(往上追踪可以看到里面已配置好了properties用于定义依赖版本,以及dependencyManagement标签进行依赖版本锁定),减少依赖冲突
  • 辅助功能:比如启动SpringBoot程序时既没有使用本地的tomcat也没有使用tomcat插件,而是用SpringBoot内置的服务器(通过追踪spring-boot-starter-web可以看到依赖了spring-boot-starter-tomcat)

2.配置文件


配置文件格式

SpringBoot程序的配置文件名必须是application ,后缀可以有三种:

  • application.properties
server.port=80
  • application.yml
server:
	port: 80
  • application.yaml
server:
	port: 80

上述三种配置文件的优先级:

application.properties > application.yml > application.yaml

代码参考SpringBoot_02_base_config


yaml格式

  • YAML(YAML Ain't Markup Language)是一种数据序列化格式
  • YAML的文件扩展名为.yml(主流)和.yaml
  • 语法规则:
    • 大小写敏感
    • 属性层级关系使用多行描述,每行结尾使用冒号结束
    • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(空格的个数并不重要,保证同层级的左侧对齐即可)
    • 属性值前面添加空格(属性名与属性值之间使用**冒号+空格作为分隔)
    • #表示注释

yaml配置文件数据读取

代码参考SpringBoot_03_read_data

有以下几种读取配置数据(即application.yml)的方式:

  • 使用@Value注解,注解中引用方式是${一级属性名.二级属性名……}
@Value("${lesson}")
private String lesson;
@Value("${server.port}")
private Integer port;
@Value("${enterprise.subject[0]}")
private String subject_00;
  • 使用@Autowired注解,该方式会将配置文件中所有的数据封装到Environment对象中,使用哪个数据调用Environment对象的getProperty方法获取:
@GetMapping("/{id}")
public String getById(@PathVariable Integer id){
    System.out.println(environment.getProperty("lesson"));
    return "hello , spring boot!";
}
  • 自定义对象,即将配置文件中的数据封装到自定义的实体类对象中,步骤如下:
    • 将实体类bean的创建交给Spring管理(即在类上添加@Component注解)
    • 实体类中使用@ConfigurationProperties注解定义该类读取配置属性信息(可使用prefix属性指定只加载指定前缀数据)
    • Controller中进行注入

多环境配置

工作中,对于开发/测试/生产环境的配置都不同,如何快速切换?

  • application.yml中配置,使用---来分割不同的配置
  • 命令行启动参数设置:
java –jar xxx.jar –-spring.profiles.active=test

代码参考SpringBoot_04_profile


多环境开发兼容问题

Maven中可以配置多环境,SpringBoot也可以,该以哪个为主?Maven为主,因为是它负责把项目打为jar包(项目启动依赖jar包)

具体操作如下:

  • application.yml中使用${profile.active}将启动环境设置为pom.xml中配置的
  • pom.xml引入插件maven-resources-plugin(用于编译配置文件,这样application.yml${xxx}才能被解析)

代码参考SpringBoot_05_maven_and_boot_profile


配置文件分类

开发完后需要测试人员进行测试,由于测试环境和开发环境的很多配置都不同,所以测试人员在运行开发好的工程时要临时修改很多配置,该如何简化操作?在高优先级的配置文件进行配置

SpringBoot中4级配置文件放置位置:级别越高优先级越高,前两级为开发服务,后两级为上线服务

1级:classpath:application.yml

2级:classpath:config/application.yml

3级:file:application.yml(file指的是生成的jar包所在的目录)

4级:file:config/application.yml

代码参考SpringBoot_06_config_file


3.SpringBoot整合junit

Spring整合junit如下,上面的注解都是重复的内容:

@RunWith(SpringJUnit4ClassRunner.class)  // 指定运行器
@ContextConfiguration(classes = SpringConfig.class)  // 指定配置类或者配置文件
public class UserServiceTest {
    @Autowired
    private BookService bookService;
    
    @Test
    public void testSave(){
    	bookService.save();
    }
}

SpringBoot整合junit比较容易,但是要注意引导类(即xxxApplication.java)所在包必须是测试类所在包及其子包,要不然要在@SpringBootTest设置启动类的路径:

  • 在测试类上添加SpringBootTest注解
  • 使用@Autowired注入要测试的资源
  • 定义测试方法进行测试

代码参考SpringBoot_07_test


4.SpringBoot整合mybatis

Spring整合Mybatis需要定义很多配置类:

  • SpringConfig配置类:导入下面两个配置类并定义扫描的包
  • JdbcConfig配置类:定义数据源
  • MybatisConfig配置类:定义SqlSessionFactoryBean以及映射配置

对于SpringBoot只需要以下几步:

  • 定义实体类和dao接口
  • 编写application.yml配置数据库连接信息并指定使用什么数据源
  • dao接口上加@Mapper(替代了之前MybatisConfig中的映射配置)

代码参考SpringBoot_08_mybatis


5.案例

使用SpringBoot将之前整合好的SSM案例进行重新实现,主要分为以下步骤:

  • pom.xml:配置起步依赖,必要的资源坐标(比如druid)
  • application.yml:设置数据源、端口等
  • config文件夹下的配置类全部删除
  • dao接口中设置@Mapper
  • 将页面放置在resources目录下的static目录中

代码参考SpringBoot_09_ssm


参考


https://www.bilibili.com/video/BV1Fi4y1S7ix?p=90-104

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/128280.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

阶段性回顾(3)

1. 学习指针必须得了解清楚内存&#xff0c;而内存到底是什么东西呢&#xff1f;内存就是电脑上的存储设备&#xff08;除了内存之外&#xff0c;还有硬盘&#xff0c;寄存器等等&#xff09;&#xff0c;那内存到底是来干啥的呢&#xff1f;程序运行的时候会载入到内存当中&am…

Fast Report .NET 2023.1.7-2022-最后版本

通过使用 Fast Report .NET&#xff0c;用户可以构建和创建本质上独立的应用程序以及报表。网。换句话说&#xff0c;这意味着 Fast Report .NET 可以作为所有用户的独立报告工具独立使用。它可以包括一个强大的可视化报告&#xff0c;用于创建和修改报告的过程。用户应用程序可…

Selenium Webdriver 实现原理详解-手工用Postman调用webdriver执行UI测试

目录 1. Selenium 概述 2. 术语解释&#xff1a; 3. Selenium WebDriver 实现原理 4. 安装selenium 客户端&#xff0c;浏览器&#xff0c;驱动 4.1 安装selenium client lib 4.2 安装浏览器和浏览器驱动 4.3 例子代码 4.4 省略浏览器驱动的方法 4.5 测试代码与Webdr…

Linux近期补充

Linux近期补充Linux命令的近期补充Linux命令的近期补充 1.本地服务器链接远端服务器 命令 ssh 远端服务器ip 如 ssh 121.5.151.236 会弹出 登录框 自己输入密码即可2.当前位置 pwd3.查看网络设备 ifconfig4.查看服务器内存 free -h可以看到还有2.3G内存可以用 5.查看磁盘…

ES学习1~23(ECMAcript相关介绍+ECMASript 6新特性)

1 ECMAcript相关介绍 1.1 什么是ECMA ECMA(European Computer Manufacturers Association)中文名称为欧洲计算机制造商协会&#xff0c;这个组织的目标是评估、开发和认可电信和计算机标准。1994年后该组织改名为Ecma国际。 1.2 什么是ECMScript ECMAScript是由Ecma国际通过…

外网远程访问本地MySQL数据库【cpolar内网穿透】

作为网站运行必备组件之一的数据库&#xff0c;免不了随时对其进行管理维护。若我们没有在安装数据库的电脑旁&#xff0c;但又需要立即对数据库进行管理时&#xff0c;应该如何处理&#xff1f;这时我们可以使用cpolar对内网进行穿透&#xff0c;远程管理和操作MySQL数据库。现…

三叠云甘特图新亮点,可翻页查看数据啦

表单管理 路径 表单 >> 表单设计 功能简介 1.「甘特视图」新增“翻页”功能&#xff0c;用户可以通过翻页查阅更多的数据。 2. 滑动超过显示区域时显示“标记点”&#xff0c;用户可以通过点击标记点快速定位到相应的数据。 3.「列表视图」条件着色功能,修复“系统字…

Linux进程管理

1.什么是程序&#xff1f;具有执行代码和执行权限的文本文件 2.什么是进程&#xff1f;是已启动的可执行程序的运行实例 3.进程的生命周期&#xff1a;由系统程序fork出来的子程序&#xff0c;具备一定的父资源&#xff0c;直到运行完毕 4.进程有哪些组成部分&#xff1f; …

操作系统真相还原_第3章:实模式下跳转指令补充

文章目录数据类型伪指令ret指令call指令jmp指令标志寄存器flags与条件转移数据类型伪指令 byte&#xff1a;字节 word&#xff1a;字 dword&#xff1a;双字 qword&#xff1a;四字 跳转指令指定目标操作数大小 short&#xff1a;字节 near&#xff1a;字 far&#xff1a;双字…

Linux环境下内存泄露检测

linux下内存泄漏检测工具valgrind 该工具可以检测下列与内存相关的问题 : 未释放内存的使用对释放后内存的读/写对已分配内存块尾部的读/写内存泄露不匹配的使用malloc/new/new[] 和 free/delete/delete[]重复释放内存Memcheck。这是valgrind应用最广泛的工具&#xff0c;一个…

vscode插件(个人正在用的)

插件目录any-ruleAuto Close TagAuto Rename Tagbackground-coverChinese (Simplified) (简体中文) Language Pack for Visual Studio CodeDebugger for JavaError LensESLintExtension Pack for JavaImage previewIntelliCodeIntelliCode API Usage ExamplesLanguage Support …

对耳朵伤害最小的耳机类型有哪些,对耳朵伤害小的骨传导耳机

现在耳机的佩戴方式越来越多样化&#xff0c;完美最常见的入耳式耳机&#xff0c;长时间佩戴会导致耳朵肿胀、不适&#xff0c;如果换成骨传导耳机就不会有这个困扰了&#xff0c;骨传导耳机利用开放式听声音的方式&#xff0c;可以在极大程度上减少对听力的损害&#xff0c;从…

Docsify保姆级教程

官网 Docsify官网地址 docsify.js.org/ 前言 动态生成文档网站的一款热门工具&#xff01;网上很多关于动态生成文档的工具&#xff01;今天我们的主角是Docsify&#xff01; Docsify的优点 无需构建&#xff0c;写完文档直接发布容易使用并且轻量智能的全文搜索丰富的 AP…

很好用的Unity编辑器扩展工具 Odin Inspector教程

Odin Inspector是什么&#xff1f; Odin Inspector是Unity的一个插件&#xff0c;让您可以享受拥有强大&#xff0c;自定义和用户友好编辑器的所有工作流程优势&#xff0c;而无需编写任何自定义编辑器代码。 Odin包含许多功能&#xff0c;例如Static Inspector&#xff0c;Pr…

Mybatis框架(一)初识Mybatis之Mybatis简单使用

本文是本人专栏【Java开发后端系列框架】里的文章&#xff0c;文章根据各框架官网与网上资料加上本人工作经验&#xff0c;进行修改总结发布在这个专栏&#xff0c;主要目的是用于自我提升&#xff0c;不用于获取利益。如果系列文章能到帮到您本人将感到荣幸&#xff0c;如果有…

修改配置文件解决matplotlib中文与正负号乱码问题

步骤如下&#xff1a; 1、 找到配置文件matplotlibrc 不管是啥系统&#xff0c;都可以通过以下方式查找matplotlibrc所在的文件夹&#xff08;可以在终端或者编译器中运行以下代码&#xff09; import matplotlib# 查找字体路径 print(matplotlib.matplotlib_fname())结果&am…

策略模式Strategy

1.意图&#xff1a;定义一系列的算法&#xff0c;把它们一个个封装起来&#xff0c;并且使它们可以相互替换。此模式使得算法可以独立于使用它们的客户而变化。 2.结构 Strategy&#xff08;策略&#xff09;定义所有支持的算法的公共接口。Context使用这个接口来调用某Concre…

小梅哥FPGA时序分析和约束实例演练课程

P1 FPGA基本原理 基本结构 三要素可类比电路板的器件、连线、对外端子 可编程逻辑功能块 触发器用于实现时序逻辑&#xff0c;进位链用于可编程逻辑块间通讯&#xff0c;使用较少。 具体器件的可编程逻辑功能块结构。第5代将四输入查找表升级到六输入查找表 由上面两个图抽象…

Flink系列-3、Flink入门案例

版权声明&#xff1a;本文为博主原创文章&#xff0c;遵循 CC 4.0 BY-SA 版权协议&#xff0c;转载请附上原文出处链接和本声明。 大数据系列文章目录 官方网址&#xff1a;https://flink.apache.org/ 学习资料&#xff1a;https://flink-learning.org.cn/ 目录Flink程序模型…

Linux内核中sk_buff结构详解

目录 1.sk_buff结构体 1.1 sk_buff在内核中的结构 1.2 重要的长度len的解析 2. sk_buff数据区 2.1 线性数据区 2.2 非线性数据区 ---------------------------------------------------------------------------------------------------------------------------- 1.s…