SpringBoot配置环境

2023-05-16


typora-copy-images-to: upload

微服务架构

image-20210807092633688

第一个Spring Boot程序

  • jdk 1.8
  • maven 3.6.1
  • springboot 最新版
  • IDEA

image-20210807100553939

image-20210807100607610

image-20210807100658931

image-20210807100733527

image-20210807101108816

image-20210807101808326

image-20210807102014862

image-20210807102048482

image-20210807111557109

修改端口号、banner

banner在线制作网站

Spring Boot banner在线生成工具,制作下载banner.txt,修改替换banner.txt文字实现自定义,个性化启动banner-bootschool.net

image-20210807115051176

原理

自动配置

pom.xml

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

启动器

  • <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter</artifactId>
    </dependency>
    
  • 启动器:Springboot的启动场景;

  • spring-boot-starter-web,就会自动导入web环境的所有依赖

  • springboot会将所有的功能场景变成一个个启动器

  • 我们要使用什么功能,只需要一个个启动器

主程序

//下面的注解用来标注这是一个springboot的应用
@SpringBootApplication
public class Springboot01HelloworldApplication {

    public static void main(String[] args) {
        //将springboot应用启动
        SpringApplication.run(Springboot01HelloworldApplication.class, args);
    }

}
  • 注解

    • @SpringBootConfiguration :springboot的配置
          @Configuration :spring配置类
          	@Component : spring的一个组件
      
      @EnableAutoConfiguration : 自动配置
          @AutoConfigurationPackage :自动配置包
          	@Import({Registrar.class}):自动配置‘包注册’
          @Import({AutoConfigurationImportSelector.class}):导入选择器
      
    • 自动配置的核心文件

    image-20210808092632439

    • springboot所有的自动配置都是在启动的时候扫描并加载:spring.factories 所有的自动配置类都在这里面,但是不一定生效,要判断条件是否成立,只要导入了对应的start,就有对应的启动器,有了启动器,自动装配就会生效,然后配置成功!
        1. springboot在启动的时候,从类路径下 /META-INF/spring.factories获取指定的值;
        2. 将这些自动配置的类导入容器,自动配置就会生效,帮我们进行自动配置
        3. 以前需要自动配置的东西,现在springboot帮我们做
        4. 整合javaEE,解决方案和自动配置的东西都在spring-boot-autoconfigure:2.5.3这个包下
        5. 它会把所有需要导入的组件,以类名的方式返回,这些组件就会被添加到容器
        6. 容器中也会存在很多的 xxxAutoConfiguration的文件,这些类给容器中导入了这个场景需要的所有组件,并自动配置,@Configuration,JavaConfig!
        7. 有了自动配置类,免去了我们手动编写配置注入功能组件的工作
  • run方法

    • SpringBoot的理解
      • 自动装配
      • run ()

自动装配原理精髓

  1. SpringBoot启动会加载大量的自动配置类
  2. 我们看我们需要的功能有没有在SpringBoot默认写好的自动配置类当中;
  3. 我们再来看这个自动配置类中到底配置了哪些组件; (只要我们要用的组件存在在其中,我们就不需要再手动配置了)
  4. 给容器中自动配置类添加组件的时候,会从properties类中获取某些属性。 我们只需要在配置文件中指定这些属性的值即可;
    xXxxAutoConfigurartion: 自动配置类;给容器中添加组件
    xxxxProperties: 封装配置文件中相关属性;

SpringBoot配置

image-20210808101121169

删除原来的properties文件,换成application.yaml

SpringBoot使用一个全局的配置文件,配置文件名称是固定的

  • application.properties

    • 语法结构: key = value
  • application.yml

    • 语法结构: key : 空格 value

    • image-20210808101540209

    • #对 空格 的要求十分严格
      #普通的 key - value
      name: chenhao
      
      #对象
      student:
        name: chenhao
        age: 3
      
      #对象的等价行内写法
      student1: {name: chenhao, age: 3}
      
      #数组
      pets:
        - cat
        - pig
        - dog
      
      #数组的行内等价写法
      pets1: [cat, pig, dog]
      
    • yaml 可以给实体类赋值

      • 例子:

      • 新建一个pojo包

      • image-20210808103027419

      • 
        @Component      //把下面的类添加到 spring 组件里面
        public class Dog {
            private String name;
            private Integer age;
        }
        
      • 然后自动生成 构造函数(有参无参),get 和 set方法,还有tostring

      • image-20210808103109112

配置文件的作用∶修改SpringBoot自动配置的默认值,因为SpringBoot在底层都给我们自动配置好了;

spring传统的内部赋值 原生方式

image-20210808105747458

通过yaml赋值

image-20210808111041676

image-20210808111216240

如何解决?

image-20210808111617445

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

yaml的高级玩法 占位符表达式

image-20210808113315267

学会举一反三将配置文件绑定到 java类上,比如连接数据库的 url 等

传统的 properties文件赋值

image-20210808112621860

yaml 的优点

  • cp只需要写一次即可, value则需要每个字段都添加
  • 松散绑定:这个什么意思呢?比如我的yml中写的last-name,这个和lastName是一样的, -后面跟着的字母默认是大写的。这就是松散绑定
  • JSR303数据校验,这个就是我们可以在字段是增加一层过滤器验证,可以保证数据的合法性
  • 复杂类型封装,yml中可以封装对象,使用@value就不支持

yaml 的相关配置

image-20210810091720816

yaml多套环境配置

image-20210810093634341

也可以把三个文件集合到一个文件内

image-20210810094456860

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SpringBoot配置环境 的相关文章

随机推荐

  • Window Sever 2012 密码忘记,修改密码的方法

    在VMWare中安装Window Server 2012忘记密码后如何进行破译修复 xff1f 方法如下 xff1a 进入BIOS 设置界面 xff0c 华硕是按f2 xff08 可以查询一下自己相应电脑进入BIOS界面的按键 xff09
  • UNIX环境高级编程笔记

    UNIX环境编程 一 UNIX基础知识1 1 Linux 主要特性1 2 Linux 内核1 3 Linux 目录结构1 4 登录1 登录名2 shell 1 5 输入和输出1 文件描述符2 标准输入 标准输出 标准错误3 不带缓冲的IO4
  • 实现map有序输出

    我们知道golang里的map是无序的 xff0c 不像python里的字典还可以对键值对顺序反序啥的 所以我们下面手动实现map的有序输出 xff0c 其实原理很简单 xff01 package main import 34 fmt 34
  • 三大框架-Spring

    一 概述 spring框架是以一个分层架构 有七个定义良好的模块组成 Spring模块构建在核心容器之上 核心容器定义了创建 配置和管理bean方式 1 Spring Core 核心容器 提供Spring的基本功能 2 SPring Con
  • Java——泛型和Io流

    目录 1 泛型 2 File对象 3 IO流 4 字节输入和输出流 5 缓存流 6 对象流 1泛型 1 1什么是泛型 1 泛型就是限制我们得数据类型 2 为什么使用泛型 我们原来在定义集合时 xff0c 是如下得定义方式 xff1a Lis
  • Spring框架入门学习笔记

    Spring概述 目录 Spring概述 IOC容器 概念 底层原理 Spring提供IOC容器实现两种方式 基于xml方式实现属性注入和对象创建 属性注入 xml注入集合属性 Spring中的bean类型 bean的作用域 bean的生命
  • &和&&的区别?

    amp 和 amp amp 都是Java中的逻辑运算符 xff0c 用于对两个布尔值进行逻辑运算 xff0c 但它们有着不同的特点和使用场景 xff0c 具体区别如下 xff1a 1 运算规则 amp 是按位与运算符 xff0c 它会对两个
  • MAC电脑GOland2022.2.1版本DEBUG问题

    在使用goland使用debug调试代码出现 API server listening at 127 0 0 1 56871 could not launch process debugserver or lldb server not f
  • Maven连接数据库

    1 创建一个maven项目 2 在resources中创建db properties配置文件和log4j properties日志的配置文件 db username 61 root db password 61 root db url 61
  • 关于vs2019网络问题解决方案

    首先将IPV4 的DNS设置为默认的114 114 114 114 xff0c 备用DNS为8 8 8 8 xff0c 若没有用 xff0c 则不勾选IPV6 xff0c 亲测有效 这个问题曾经也困扰了我好几个月 xff0c 甚至都想换掉v
  • Spring Boot启动器

    文章目录 Spring Boot启动器简介自定义springboot启动器命名规约自定义starter步骤1 创建一个Spring boot项目2 导入pom3 编写配置类4 在resources META INF目录下新建spring f
  • web开发入门

    在vscode中输入英文 xff0c 按tab键 xff0c 叩可显示html5的框架 搭建好框架之后 xff0c 再进行局部设计即可制作一张简易静态网页
  • springboot学习笔记

    http t csdn cn aLaeJ
  • spring中的annotation简介

    1 注解介绍 注解 xff0c 是一种用来描述数据的数据 比如说 64 override表示我们重载父类函数 如果我们不用这个注解 xff0c 程序也能执行 xff0c 但是我们加了这个注解代表我告诉编译器这个方法是一个重写的方法 如果父类
  • C语言中如何使用字符数组和字符型指针变量

    案例一 使用字符数组统计字符串的长度以及实现字符串的反转 参考代码 xff1a include lt stdio h gt include lt stdlib h gt include lt string h gt int main cha
  • 拓扑排序详解

    提示 xff1a 古人学问无遗力 少壮功夫老始成 xff0c 纸上得来终觉浅 觉知此事须躬行 文章目录 一 AOV网的特点二 问题三 拓扑排序四 拓扑排序的方法五 检查AOV网中是否存在一个环六 两种思路6 1 思路一6 1 1 思路一代码
  • Altium Designer——设置电源线规则

    1 创建类来新建规则 执行菜单Design Classes 快捷键DC 将这多个网络建立一个class 执行菜单命令Design Rules 快捷键DR xff09 xff0c 进入规则设置栏 xff1b 新建个线宽规则 xff0c 在规则
  • 【Archlinux】(3) —— dwm+st+firefox+fcitx=愉快上网

    Archlinux dwm 43 st 43 firefox 43 fcitx 61 愉快上网 1 dwm窗口管理器2 ST简单终端3 firefox浏览器4 fcitx中文输入法参考资料 注意 后的命令是root用户和普通用户均可以的操作
  • idea创建maven项目产生卡死问题

    2021版idea创建maven项目时卡死问题解决 xff1a 问题描述 xff1a 在file project structure中新建maven的modules时 xff0c 点击finish后idea会卡死 xff0c 其他人有的说要
  • SpringBoot配置环境

    typora copy images to upload 微服务架构 第一个Spring Boot程序 jdk 1 8maven 3 6 1springboot 最新版IDEA 修改端口号 banner banner在线制作网站 Sprin