当前位置: 首页 > article >正文

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;
    }

    @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.kler.cn/a/379391.html

相关文章:

  • scala的属性访问权限
  • 真·香!深度体验 zCloud 数据库云管平台 -- DBA日常管理篇
  • 架构系列---高并发
  • 植被遥感常用反射特征表达
  • utf-8、pbkdf2_sha
  • 【案例】旗帜飘动
  • ValueError: set_wakeup_fd only works in main thread
  • 干掉复杂的工具类,Hutool 工具库确实香!
  • Qt中的Model与View(Qt官网翻译版)
  • PH热榜 | 2024-11-04
  • 基于人工智能的搜索和推荐系统
  • 领域(Domain)详解
  • IPC机制总结笔记
  • 关于电脑蓝屏的那些解决方案--总有一款适合你
  • Leetcode 合并两个数组
  • mysql JSON字段使用
  • Gitlab-runner running on Kubernetes - hostAliases
  • 深度学习笔记7-最小二乘法
  • 享元模式-实现大颗粒度对象缓存机制
  • Cesium移动3D模型位置
  • docker desktop使用ubuntu18.04带图形化+运行qemu
  • 划界与分类的艺术:支持向量机(SVM)的深度解析
  • metasploit/modules/evasion 有哪些模块,以及具体使用案例
  • WebService详解
  • 服务器数据恢复—SAN环境中LUN映射错误导致文件系统一致性出错的数据恢复案例
  • 【neo4j】 图数据库neo4j cypher单一语句 optional 可选操作的技巧