SpringBoot day 1104

news2024/11/5 20:11:29

ok了家人们这周学习SpringBoot的使用,和深入了解,letgo

.SpringBoot简介

1.1 设计初衷

目前我们开发的过程当中,一般采用一个单体应用的开发采用
SSM 等框架进行开发,并在 开发的过程当中使用了大量的 xml
等配置文件,以及在开发过程中使用 MAVEN 的构建工具来进
行构建项目,但是往往有时也会出现依赖的一些冲突,而且开
发的时候测试还需要下载和使用 tomcat 等等这些 servlet
器,所以 开发的效率不高
那么在以上的问题中,我们就可以使用 springboot 来解决这些
问题,当然他不仅仅是解决这些问题,来提高我们的开发人员
的开发效率。使用 springboot :可以 不需要配置 ,可以 不需要
自己单独去获取tomcat , 基本解决了包依赖冲突的问题,一键
发布等等特性。

1.2 SpringBoot介绍

Spring Boot 可以帮助我们开发 基于 Spring 的 、独立的 、生产级的 应用程序。
  • 为所有Spring开发提供更快的入门体验
  • 开箱即用,提供了自动配置
  • 提供一系列大型项目通用的非功能性特性
    • 外部化配置嵌入式服务器
    • 安全性
    • 健康检查
    • 指标
  • 完全不需要代码生成,也不需要 XML 配置
    springboot 就是一个基于 spring 的一个框架。提供了一些
    自动配置的依赖包,自动嵌入 servlet 的容器,简化了我们
    开发的配置,提升开发人员的开发效率,并解决了包依赖
    的问题。

.SpringBoot入门案例

2.1 快速入门

1. 创建 Maven 工程
2. pom.xml 文件中配置起步依赖
3. 编写 SpringBoot 启动引导类
4. 编写 HelloController
5. 访问 http://localhost:8080/hello 测试
  • 创建Maven工程
<groupId>com.cjx</groupId>
    <artifactId>springBoot_02</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>
  • pom.xml文件中配置起步依赖
<?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 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.cjx</groupId>
    <artifactId>springBoot_02</artifactId>
    <version>1.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.source>17</maven.compiler.source>
        <maven.compiler.target>17</maven.compiler.target>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <!--   所有的springboot项目都要继承的父工程   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.10.RELEASE</version>
    </parent>
    <!-- web开发的相关依赖  场景启动器依赖 -->
    <dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
    </dependencies>

</project>
  • 编写SpringBoot启动引导类
package com.cjx;

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

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}
  • 编写HelloController
@RestController
public class HelloController {
@RequestMapping("/hello")
public String Hello(){
return "hello SpringBoot";
}
}
  • 访问http://localhost:8080/hello测试

2.1.1 第二种创建springboot的方法,(2024版IDEA)

我们在创建一个新的module,如图所示

package name是创建之后给你自带的文件夹可以选择删除

packaging:是选择打包方式,(项目完成后选择打成war包还是jar包去测试)

我们只留下src和pom.xml,其他没什么用

之后我们可以看到Java下有一个application,springboot引导类

有两种创建方式

 如果创建的时候报错了,试试换一个server URL,其他博主应该有教程

应为这个地址是国外的,可以试试国内的地址(aliyun)等等

2.2 @SpringBootApplication

  • @SpringBootApplication是一个组合注解

  • @SpringBootConfiguration注解作用
    • @SpringBootConfiguration 是对 @Configuration 注解
      的包装, proxyBeanMethods 默认配置 true full 模式
      (单例 Bean
    • 标识是一个配置类,所以 引导类也是配置类
  • @ComponentScan注解作用
    • 组件扫描,默认扫描的规则 引导类所在的包及其子包所
      有带注解的类

2.3 添加父工程坐标分析

通过点击 spring-boot-starter-parent 父工程发现,它的父工
程是
 <!--   所有的springboot项目都要继承的父工程   -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.3.10.RELEASE</version>
    </parent>
进入到 spring-boot-dependencies 工程中发现:声明了所有
开发中常用的依赖的版本号 , 自动版本号的控制(当然也可以
修改)。我们的项目需要以这个项目为父工程,这样我们就不
用操心 依赖的版本问题了 ,需要什么依赖,直接引入坐标 (
需要添加版本 ) 即可!
见到的 spring-boot-starter-* : 第三方为我们提供的简化开发
[ 场景启动器 ]

2.4 关于stater分析

再次从工程中 点击 spring-boot-starter-web 进入依赖管理:
分析 spring-boot-starter-web 依赖发现:内部把关于 web
MVC 开发所有的依赖都已经导入并且版本控制完成了,我们
只需引入 spring-boot-starter-web 这个依赖就可以实现我们
Web MVC 的功能!
总结:
  • 所有SpringBoot项目要继承的项目,定义了若干个坐标版
    本号(依赖管理,而非依赖),以达到减少依赖冲突的目
  • starter SpringBoot 中常见项目名称,定义了当前项目使
    用的所有项目坐标,以达到减少依赖配置的目的

.SpringBoot配置文件

3.1 三种配置文件及优先级

SpringBoot 约定大于配置 的,所以很多配置都有默认值。
如果想修改默认配置,可以用 application.properties
application.yml(application.yaml) 自定义配置。 SpringBoot
默认从 Resource 目录加载自定义配置文件。
配置文件必须放置在项目的类加载目录下 , 并且名字必须是
application
  • 属性配置文件:application.properties
server . port = 8081
  •  yml文件:application.yml

server :
    port : 8082
  •  yaml文件:application.yaml
server :
   port : 8083
  • 文件加载的优先级 
application.properties > application.yml > application.yaml

3.2 yml配置文件

  • yml介绍 

YML 文件格式是 YAML(YAML Aint Markup Language) 编写的
文件格式。可以直观被电脑识别的格式。容易阅读,容易与脚
本语言交互。可以支持各种编程语言 (C/C++ Ruby
Python Java Perl C# PHP) 。以数据为核心, XML
简洁 。扩展名为 .yml .yaml
  • 配置文件语法
    • 大小写敏感
    • 数据值前边必须有空格,作为分隔符
    • 使用缩进表示层级关系
    • 缩进不允许使用tab,只允许空格
      缩进的空格数不重要,只要相同层级的元素左对齐即可
    • 数组和集合使用 “- ”表示数组每个元素。减号与数据间空格分隔
    • #’表示注释,从这个字符一直到行尾,都会被解析器忽略。 
employee :
     empId : 1
     empName : zhangsan
     empSalary : 200.0
     address :
        - 长沙市
        - 常德市
        - 岳阳市

 

 3.3 获取配置文件中值

1. 使用 @value 注解的方式 只能获取简单值
2. 使用 @ConfigurationProperties
  • 使用@value注解的方式 
@RestController
public class HelloController {

    @Value("${employee.empId}")
    private Integer empId;
    @Value("${employee.empName}")
    private String empName;
    @Value("${employee.empSalary}")
    private Double empSalary;
    @Value("${employee.address[0]}")
    private String address;

    @RequestMapping("/hello")
    public String hello(String name){
        System.out.println(empId+"..."+empName+"..."+empSalary+"..."+address);
        return "hello"+name;
  •  使用@ConfigurationProperties

通过注解 @ConfigurationProperties(prefix='' 配置文件中的
key 的前缀 ") 可以将配置文件中的配置自动与实体进行映射。
使用 @ConfigurationProperties 方式必须提供 Setter 方法,使
@Value 注解不需要 Setter 方法。

 

package com.cjx.pojo;

import org.springframework.beans.factory.annotation.Configurable;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;

import java.util.Arrays;

@Component
@ConfigurationProperties(prefix = "employee")
public class Employee {
    private Integer empId;
    private String empName;
    private Double empSalary;
    private String[] address;

    public void setEmpId(Integer empId) {
        this.empId = empId;
    }

    public void setEmpName(String empName) {
        this.empName = empName;
    }

    public void setEmpSalary(Double empSalary) {
        this.empSalary = empSalary;
    }

    public void setAddress(String[] address) {
        this.address = address;
    }

    @Override
    public String toString() {
        return "Employee{" +
                "empId=" + empId +
                ", empName='" + empName + '\'' +
                ", empSalary=" + empSalary +
                ", address=" + Arrays.toString(address) +
                '}';
    }
}

 

@RestController
public class HelloController {

    @Autowired
    private Employee employee;

    @RequestMapping("/hello")
    public String hello(String name){
        System.out.println(employee);
        System.out.println("name"+"~"+name);
        return "hello"+name;
    }
}
自定义对象封装数据解决警告

<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configurationprocessor</artifactId>
<optional>true</optional>
</dependency>

.SpringBoot多环境配置

4.1 yml文件多环境开发配置

Spring Boot 项目中配置文件的名称只能是 application , 如果
我们把所有的配置全都写在一个配置文件中如果配置项比较
, 配置文件就会显得比较复杂和臃肿 ! 不利于后期的项目维
护和开发
  • 因为开发环境变化 , 我们需要修改配置文件中某一个配置项
    的值(比如之前是 mysql 数据库,切换 oracle 数据库)
  • 项目开发完成需要上线了 , 需要把一些环境修改成正式环
    境( 开发 测试 上线 ,多环境切换)

解决方案 :使用profiles拆分配置 

spring boot 项目中允许使用多个 YAML 配置文件。
这些文件名称必须为 application-*.yml ,并且在
application.yml 中激活。
  •  application-dev.yml

server :
port : 8081
  • application-test.yml 
server :
port : 8082
  • application-pro.ym 
server :
port : 8083 
  • application.yml激活 
spring :
profiles :
active : test

4.2 SpringBoot项目打包

  • 添加打包插件 
jar 支持命令行启动需要依赖 maven 插件支持,请确认打包时
是否具有 SpringBoot 对应的 maven 插件
<!-- SpringBoot应用打包插件-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-mavenplugin</artifactId>
</plugin>
</plugins>
</build>
  •  idea点击package进行打包

4.3 多环境启动命令格式

java -jar springboot_01-1.0-SNAPSHOT.jar
java -jar springboot_01-1.0-SNAPSHOT.jar --
spring.profiles.active=pro
java -jar springboot_01-1.0-SNAPSHOT.jar --
spring.profiles.active=pro --server.port=8084

4.4 配置文件位置分类 

位置:
  • file config/application.yml 【最高】
  • file application.yml
  • classpathconfig/application.yml
  • classpathapplication.yml 【最低】

作用:

        1级与 2 级留做系统打包后设置通用属性
        3级与 4 级用于系统开发阶段设置通用属性

.SpringBoot静态资源支持【了解】

 springboot中就定义了静态资源的默认查找路径:

  • classpath:/META-INF/resources/
  • classpath:/resources/
  • classpath:/static/
  • classpath:/public/

 我们习惯会把静态资源放在classpath:/static/ 目录下

ok了家人们byebye明天见

 

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

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

相关文章

HCIP(7)-边界网关协议BGP基本配置(对等体peer,宣告network,引入import)

边界网关协议&#xff08;Border Gateway Protocol&#xff0c;BGP&#xff09;是一种用来在路由选择域之间交换网络层可达性信息&#xff08;Network Layer Reachability Information&#xff0c;NLRI&#xff09;的路由选择协议。由于不同的管理机构分别控制着他们各自的路由…

算法: 链表题目练习

文章目录 链表题目练习两数相加两两交换链表中的节点重排链表合并 K 个升序链表K 个一组翻转链表 总结 链表题目练习 两数相加 坑: 两个链表都遍历完后,可能需要进位. class Solution {public ListNode addTwoNumbers(ListNode l1, ListNode l2) {ListNode cur1 l1;ListNode…

HTML 基础标签——元数据标签 <meta>

文章目录 1. `<meta>` 标签概述2. 属性详解2.1 `charset` 属性2.2 `name` 属性2.3 `content` 属性2.4 `http-equiv` 属性3. 其他常见属性小结在 HTML 文档中,元数据标签 <meta> 是一种重要的标签,用于提供关于文档的信息,这些信息不直接显示在网页内容中,但对于…

新闻稿件管理系统:SpringBoot框架深度解析

2相关技术 2.1 MYSQL数据库 MySQL是一个真正的多用户、多线程SQL数据库服务器。 是基于SQL的客户/服务器模式的关系数据库管理系统&#xff0c;它的有点有有功能强大、使用简单、管理方便、安全可靠性高、运行速度快、多线程、跨平台性、完全网络化、稳定性等&#xff0c;非常…

【网络】自定义协议——序列化和反序列化

> 作者&#xff1a;დ旧言~ > 座右铭&#xff1a;松树千年终是朽&#xff0c;槿花一日自为荣。 > 目标&#xff1a;了解什么是序列化和分序列&#xff0c;并且自己能手撕网络版的计算器。 > 毒鸡汤&#xff1a;有些事情&#xff0c;总是不明白&#xff0c;所以我不…

CTFshow之信息收集第1关到10关。详细讲解

得而不惜就该死&#xff01; --章总 开始新的篇章&#xff01; 零、目录 一、实验准备 1、ctf网站&#xff1a;ctf.show 2、工具&#xff1a;chrome浏览器、hackbar插件 3、burpsuite抓包工具 二、实验技巧 &#xff08;一&#xff09;F12摸奖 源码泄露 &#xff08;二…

Redis ——发布订阅

问题引入&#xff1a; 服务器A、B、C、D&#xff0c;客户端&#xff1a;C1&#xff0c;C2&#xff0c;C3&#xff0c;C4&#xff1b; 客户端基于集群聊天服务器的负载均衡分配&#xff1b; C1 被分配到A&#xff0c;C2 被分配到B&#xff0c;C3 被分配到C&#xff0c;C4 被分…

【漏洞复现】某平台-QRcodeBuildAction-LoginSSO-delay-mssql-sql注入漏洞

《Java代码审计》http://mp.weixin.qq.com/s?__bizMzkwNjY1Mzc0Nw&mid2247484219&idx1&sn73564e316a4c9794019f15dd6b3ba9f6&chksmc0e47a67f793f371e9f6a4fbc06e7929cb1480b7320fae34c32563307df3a28aca49d1a4addd&scene21#wechat_redirect 《Web安全》h…

API网关 - JWT认证 ; 原理概述与具体实践样例

API网关主要提供的能力&#xff0c;就是协议转换&#xff0c;安全&#xff0c;限流等能力。 本文主要是分享 如何基于API网关实现 JWT 认证 。 包含了JWT认证的流程&#xff0c;原理&#xff0c;与具体的配置样例 API网关认证的重要性 在现代Web应用和微服务架构中&#x…

Excel:vba实现批量插入图片

实现的效果&#xff1a; 实现的代码&#xff1a; Sub InsertImageNamesAndPictures()Dim PicPath As StringDim PicName As StringDim PicFullPath As StringDim RowNum As IntegerDim Pic As ObjectDim Name As String 防止表格里面有脏数据Cells.Clear 遍历工作表中的每个图…

什么是 OpenTelemetry?

OpenTelemetry 定义 OpenTelemetry (OTel) 是一个开源可观测性框架&#xff0c;允许开发团队以单一、统一的格式生成、处理和传输遥测数据&#xff08;telemetry data&#xff09;。它由云原生计算基金会 (CNCF) 开发&#xff0c;旨在提供标准化协议和工具&#xff0c;用于收集…

电商美工必备神器:千鹿 AI 轻松解决场景图主图尺寸问题

前言 在电商领域&#xff0c;美工在做详情页设计时&#xff0c;常常会为图片尺寸问题而苦恼。而 AI 扩图在此刻就成为了美工们的得力助手。其中&#xff0c;场景图主图太小是一个让人颇为头疼的难题。千鹿 AI 作为一款强大的工具&#xff0c;能够一键将图片改成指定尺寸&#…

关于 PDF 抽取的吐槽

今天一下午写了8&#xff0c;9个 PDF 抽取的脚本。最后又回归最开始简单的模式了&#xff0c;要疯了&#xff0c;谁懂啊。 我是下午的工作是这样的(我是这么疯的) 最开始使用最简单的策略&#xff0c;先使用 PyPDF2.PdfReader(file) 读取文件&#xff0c;然后在每一页使用 pag…

无人机避障——(局部规划方法)DWA(动态窗口法)

传统的DWA算法更加倾向于车辆等差速无人车&#xff0c;旋翼无人机是全速的&#xff0c;全向的。 全局路径是通过A*算法生成的 局部路径规划效果&#xff1a; DWA算法效果&#xff1a; 过程图&#xff1a; 完整过程&#xff1a; PID算法效果&#xff1a; 过程图&#xff1a…

知识吾爱纯净版小程序系统 leibiao SQL注入漏洞复现(XVE-2024-30663)

0x01 产品简介 知识吾爱纯净版小程序系统是一款基于微信小程序平台开发的知识付费应用,旨在帮助用户快速建立自己的知识付费平台,实现支付变现和流量主收益。它提供了简洁明了的用户界面和良好的用户体验,同时注重用户隐私保护,确保用户信息的安全存储和传输。 0x02 漏洞…

基于web的便捷饭店点餐小程序的设计与实现(lw+演示+源码+运行)

摘 要 互联网发展至今&#xff0c;无论是其理论还是技术都已经成熟&#xff0c;而且它广泛参与在社会中的方方面面。它让信息都可以通过网络传播&#xff0c;搭配信息管理工具可以很好地为人们提供服务。针对高校教师成果信息管理混乱&#xff0c;出错率高&#xff0c;信息安全…

全面解析:深度学习技术及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;深度学习技术及其应用 全面解析&#xff1a;深度学习技术及其应用 全面解析&#xff1a;深度学习技术及其应…

项目实战使用gitee

1.创建本地仓库 2.进行提交到本地仓库 创建仓库后在idea中会显示图标&#xff0c;点击绿色的√进行快速提交 3.绑定远程仓库 4.番外篇-创建gitee仓库 注意不要勾选其他

【鸿蒙新闻】10月29日警用鸿蒙开发者大会在北京胜利召开,开启智慧应用新时代!

10月29日&#xff0c;在公安部科技信息化局、公安部装备财务局指导下&#xff0c;由公安部第一研究所主办&#xff0c;鼎桥通信技术有限公司、OpenHarmony生态委员会及公共安全专委会协办的警用鸿蒙开发者大会在北京胜利召开。会议以“拥抱警鸿创新生态 开启智慧应用新时代”为…

Spring Boot 3.3 【九】Redis 的五种数据结构深入浅出(String List Set Hash Zset)

如果觉得本文能够帮到您&#xff0c;请关注&#x1f31f;、点赞&#x1f44d;、收藏&#x1f4da;&#xff0c;让这份美好延续下去&#xff01; 一、Redis 数据结构简介 在现代应用开发中&#xff0c;高效的数据存储和管理是构建强大系统的关键。Redis 作为一种高性能的内存数…