SpringBoot day 1104

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;}@Overridepublic String toString() {return "Employee{" +"empId=" + empId +", empName='" + empName + '\'' +", empSalary=" + empSalary +", address=" + Arrays.toString(address) +'}';}
}

 

@RestController
public class HelloController {@Autowiredprivate 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.xdnf.cn/news/2423.html

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

相关文章

Python | Leetcode Python题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution:def __init__(self, w: List[int]):self.pre list(accumulate(w))self.total sum(w)def pickIndex(self) -> int:x random.randint(1, self.total)return bisect_left(self.pre, x)

C++ | Leetcode C++题解之第528题按权重随机选择

题目&#xff1a; 题解&#xff1a; class Solution { private:mt19937 gen;uniform_int_distribution<int> dis;vector<int> pre;public:Solution(vector<int>& w): gen(random_device{}()), dis(1, accumulate(w.begin(), w.end(), 0)) {partial_sum(…

弹簧质点系统求Hessian

Verification https://www.matrixcalculus.org/ (1-l0/norm2(p-q))*(p-q)

游游的游戏大礼包

游游的游戏大礼包 import java.util.*; public class Main {public static void main(String[] args) {Scanner in new Scanner(System.in);long n in.nextInt();long m in.nextInt();long a in.nextInt();long b in.nextInt();long ret 0;for(long x 0; x < Math.…

详解ARM汇编条件标志

版权归作者所有&#xff0c;如有转发&#xff0c;请注明文章出处&#xff1a;https://cyrus-studio.github.io/blog/ 条件标志 在 ARM 指令集中&#xff0c;条件标志是控制指令执行的一种机制&#xff0c;它们用于实现条件分支、比较和其他逻辑操作。 我们平时使用 IDA 调试程…

Navicat Premium安装卸载及使用教程教程

Navicat Premium 17 安装卸载及使用教程教程 0. 卸载 没安装过 Navicat 直接跳过本步骤即可。 正常卸载顺序即可&#xff0c;网上很多教程&#xff0c;这里不演示了 如果怕卸载不干净&#xff0c;最后时候可以执行一下压缩包里面的无限试用 Navicat.bat 即可成功删除Navicat…

Backbone网络详解

Backbone 网络&#xff08;主干网络&#xff09;是深度学习模型中的一个重要组成部分&#xff0c;尤其在计算机视觉任务中。Backbone 网络的主要作用是从输入数据中提取有用的特征&#xff0c;为后续的任务&#xff08;如分类、检测、分割等&#xff09;提供强大的特征表示。常…

Jenkins找不到maven构建项目

有的可能没有出现maven这个选项 解决办法&#xff1a;需要安装Maven项目插件 输入​Maven Integration plugin​

【339】基于springboot的新能源充电系统

毕 业 设 计&#xff08;论 文&#xff09; 题目&#xff1a;新能源充电系统的设计与实现 摘 要 如今社会上各行各业&#xff0c;都喜欢用自己行业的专属软件工作&#xff0c;互联网发展到这个时候&#xff0c;人们已经发现离不开了互联网。新技术的产生&#xff0c;往往能解…

Godot Zelda教程练习1

提示&#xff1a;B站链接&#xff1a;Godot Zelda教程练习 资产链接&#xff1a;项目资产 Godot版本&#xff1a;4.3 文章目录 一、新建项目1、创建项目2、设置项目标签3、项目基本设置4、导入资产 二、图块集和自动平铺1、创建TileMapLayer2、创建Terrian Set1、Match Siders(…

【案例】旗帜飘动

开发平台&#xff1a;Unity 6.0 开发工具&#xff1a;Shader Graph 参考视频&#xff1a;Unity Shader Graph 旗帜飘动特效   一、效果图 二、Shader Graph 路线图 三、案例分析 核心思路&#xff1a;顶点偏移计算 与 顶点偏移忽略 3.1 纹理偏移 视觉上让旗帜保持动态飘动&a…

Android亮屏Job的功耗优化方案

摘要: Job运行时会带来持锁的现象,目前灭屏放电Job的锁托管已经有doze和绿盟标准监管,但是亮屏时仍旧存在过长的持锁现象,故为了优化功耗和不影响用户体验下,新增亮屏放电下如果满足冻结和已运行过一次Job,则进行job限制,当非冻结时恢复的策略 1.现象: (gms_schedu…

Java面试经典 150 题.P55. 跳跃游戏(009)

本题来自&#xff1a;力扣-面试经典 150 题 面试经典 150 题 - 学习计划 - 力扣&#xff08;LeetCode&#xff09;全球极客挚爱的技术成长平台https://leetcode.cn/studyplan/top-interview-150/ 题解&#xff1a; class Solution {public boolean canJump(int[] nums) {int…

源码解析篇 | YOLO11:计算机视觉领域的新突破 !对比YOLOv8如何 ?

前言&#xff1a;Hello大家好&#xff0c;我是小哥谈。在2024年9月27日盛大举行的YOLO Vision 2024活动上&#xff0c;Ultralytics公司震撼发布了YOLO系列的最新成员—YOLO11。作为Ultralytics YOLO系列实时目标检测器的最新迭代&#xff0c;YOLO11凭借尖端的准确性、速度和效率…

mac m1 docker本地部署canal 监听mysql的binglog日志

mac m1 docker本地部署canal监听mysql的binglog日志(虚拟机同理) 根据黑马视频部署 1.docker 部署mysql 1.docker拉取mysql 镜像 因为m1是arm架构.需要多加一条信息 正常拉取 docker pull mysql:tagm1拉取 5.7的版本. tag需要自己指定版本 docker pull --platform linux/x…

复现LLM:带你从零训练tokenizer

1. 引言 分词器是每个大语言模型必不可少的组件&#xff0c;但每个大语言模型的分词器几乎都不相同。如果要训练自己的分词器&#xff0c;可以使用huggingface的tokenizers框架&#xff0c;tokenizers包含以下主要组件&#xff1a; Tokenizer: 分词器的核心组件&#xff0c;定…

Nginx防盗链配置

1. 什么是盗链? 盗链是指服务提供商自己不提供服务的内容&#xff0c;通过技术手段绕过其它有利益的最终用户界面&#xff08;如广告&#xff09;&#xff0c;直接在自己的网站上向最终用户提供其它服务提供商的服务内容&#xff0c;骗取最终用户的浏览和点击率。受益者不提供…

DAY53|| 42. 接雨水|84.柱状图中最大的矩形

42. 接雨水(超经典款&#xff09; 42. 接雨水 - 力扣&#xff08;LeetCode&#xff09; 给定 n 个非负整数表示每个宽度为 1 的柱子的高度图&#xff0c;计算按此排列的柱子&#xff0c;下雨之后能接多少雨水。 示例 1&#xff1a; 输入&#xff1a;height [0,1,0,2,1,0,1,3,2…

字节跳动(抖音)软件测试月薪23K岗、技术二面面试题最新出炉

测试人员在测试中的任务是什么&#xff1f; ① 尽可能早地找出系统中的bug&#xff1b; ② 避免软件开发过程中缺陷的出现&#xff1b; ③ 协助开发定位bug.以及后续bug跟踪 ④ 一切以用户的需求为标准&#xff0c;确保软件的质量 HTTP与HTTPS协议的区别&#xff1f; …

新160个crackme - 091-DOSKEY-CRACKME2

运行分析 需破解Name和Password PE分析 upx壳&#xff0c;32位 手动脱壳 x32dbg打开程序&#xff0c;按一下F8&#xff0c;根据ESP定律&#xff0c;在此处下断点按一下F9&#xff0c;两下F8&#xff0c;来到OEP处00401000打开Scylla&#xff0c;点击转储保存文件点击IAT自动搜索…