• springboot配置


    springboot配置

    配置文件分类

    • springboot提供了多种属性配置方式
      • application.xml(只有老的spring项目使用)
      • application.properties
      • application.yml(或yaml)

    优先级:properties>yml>yaml

    配置文件

    pom.xml★

    在Spring Boot项目中,pom.xml文件是Maven项目对象模型(Project Object Model)的定义文件,它用于管理项目的构建、依赖和插件。

    Maven是一个流行的自动化构建工具,它通过pom.xml文件来执行构建过程。本教程全部项目都使用Maven构建。

    下面是一个基本的pom.xml文件的结构和各个部分的解释:

    1. "1.0" encoding="UTF-8"?>
    2. <project xmlns="http://maven.apache.org/POM/4.0.0"
    3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    4. xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    5. <modelVersion>4.0.0modelVersion>
    6. <groupId>com.examplegroupId>
    7. <artifactId>my-spring-boot-appartifactId>
    8. <version>1.0-SNAPSHOTversion>
    9. <name>My Spring Boot Appname>
    10. <description>Spring Boot 3 example projectdescription>
    11. <parent>
    12. <groupId>org.springframework.bootgroupId>
    13. <artifactId>spring-boot-starter-parentartifactId>
    14. <version>3.0.0version>
    15. parent>
    16. <dependencies>
    17. <dependency>
    18. <groupId>org.springframework.bootgroupId>
    19. <artifactId>spring-boot-starter-webartifactId>
    20. dependency>
    21. dependencies>
    22. <build>
    23. <plugins>
    24. <plugin>
    25. <groupId>org.springframework.bootgroupId>
    26. <artifactId>spring-boot-maven-pluginartifactId>
    27. plugin>
    28. plugins>
    29. build>
    30. project>

    注意事项:

    • 继承Spring Boot父项目:通过指定spring-boot-starter-parent作为父POM,您的项目将继承Spring Boot的默认配置,包括依赖管理、插件管理等。
    • 依赖管理:在部分,您可以添加项目所需的所有依赖。Spring Boot提供了许多“Starter”依赖,它们是一组方便的依赖描述符,可以简化构建配置。
    • 插件配置:在部分的中,您可以配置项目构建时使用的插件。例如,spring-boot-maven-plugin用于创建可执行的jar或war文件。
    • 属性和配置:您可以在pom.xml中定义和使用属性,以便于维护和管理配置。例如,您可以定义一个属性来表示Spring Boot的版本号,并在多个地方引用它。
    • 多环境配置:Maven支持多环境配置,您可以通过 profiles 来定义不同环境下的配置,并在构建时激活相应的 profile。

    properties配置文件*

    介绍

    properties配置文件是一种用于配置应用程序属性的文件格式。它是一个标准的Java属性文件,通常包含键值对,其中键和值之间用等号=分隔。properties文件可以直接放在src/main/resources目录下,或者放在任何类路径(classpath)可以访问的地方。

    只有你需要与旧的Java应用程序或框架保持兼容时才使用。

    示例
    1. server.port=8080
    2. server.servlet.context-path=/myapp
    3. spring.datasource.url=jdbc:mysql://localhost:3306/mydb
    4. spring.datasource.username=myuser
    5. spring.datasource.password=mypassword
    优缺点

    优点:

    向后兼容性:properties文件格式在Java历史中非常悠久,几乎所有版本的Java都支持这种格式。简单性:properties文件的语法非常简单,对于简单的配置来说,它是非常直观的。

    缺点

    树状结构的复杂性:对于复杂的配置,尤其是层级结构的数据,properties文件可能会变得难以阅读和维护。类型不明确:properties文件中的所有值都是字符串,这意味着在将它们赋值给配置类中的不同类型字段时,需要手动进行类型转换。

    yml配置文件★

    介绍

    YAML是“YAML Ain’t Markup Language”(递归缩写为“YAML不是标记语言”)的缩写,它是一种直观的数据序列化格式,可以被用于配置文件。

    YAML使用空白字符(空格和缩进)来表示结构层次,它比properties文件更适合表示复杂的配置数据,实际开发基本都使用yml配置文件,有的程序员甚至在创建springboot工程后第一件事就是把配置文件的后缀改为yml。

    适合复杂的、具有层级结构的配置场景,尤其是当你需要配置大量的、相关的配置项时。

    优缺点

    优点:

    清晰的层次结构:YAML使用缩进来表示层级关系,这使得表示复杂的数据结构变得非常清晰。类型支持:YAML支持多种数据类型,如字符串、数字、布尔值等,并且可以自动将值转换为适当的类型。可读性强:YAML文件通常更易于阅读和理解,尤其是对于具有复杂层次结构的配置。

    缺点:

    轻微的复杂性:YAML的语法比properties文件稍微复杂一些,初学者可能需要一些时间来适应。

    yml基本语法
    • 大小写敏感
    • 数值前必须有空格,作为分隔符
    • 使用缩进表示层级关系,缩进时,不允许使用tab键,只能使用空格
    • 缩进的空格数不重要,只要相同层级的元素左侧对齐即可
    • #表示注解
    1. server:
    2. # 修改springboot工程运行端口
    3. port: 8081
    4. #驱动类名称
    5. spring:
    6. datasource:
    7. # 设置数据库驱动
    8. driver-class-name: com.mysql.cj.jdbc.Driver
    9. # 设置数据库地址
    10. url: jdbc:mysql://localhost:3306/tlias
    11. username: root
    12. password: 123456
    13. servlet:
    14. multipart:
    15. enabled: true
    16. max-file-size: 10MB
    17. max-request-size: 100MB
    18. #配置mybatis的日志, 指定输出到控制台
    19. mybatis:
    20. configuration:
    21. log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
    22. map-underscore-to-camel-case: true
    用户自定义内容
    • 对象(map): 键值对的集合
    1. person:
    2. name: zhangsan
    3. # 行内写法
    4. person: {name: zhangsan}
    • 数组: 一组按次序排序的值
    1. address:
    2. - beijing
    3. - shanghai
    4. # 行内写法
    5. address: [beijing,shanghai]
    • 纯量: 不可分割的值
    1. s1: '123 \n 456' # 单引号不会被转义
    2. s2: "123 \n 456" # 双引号会被转义
    • 参数引用
    1. name: zhangsan
    2. person:
    3. name: ${name}
    获取自定义值
    1. @Value
    1. @Value("${person1.name}")
    2. private String name;
    3. @Value("${address1[0]}")
    4. private String a1;
    5. @Value("${s1}")
    6. private String s1;
    7. @Value("${s2}")
    8. private String s2;
    9. @Test
    10. void test() {
    11. System.out.println(name);
    12. System.out.println(a1);
    13. System.out.println(s1);
    14. System.out.println(s2);
    15. }
    1. Envirment
    1. @Autowired
    2. private Environment env;
    3. @Test
    4. void test() {
    5. System.out.println(env.getProperty("person1.name"));
    6. System.out.println(env.getProperty("address1[0]"));
    7. System.out.println(env.getProperty("s1"));
    8. System.out.println(env.getProperty("s2"));
    9. }
    1. @ConfigurationProperties

    先在pom.xml中添加依赖

    1. <dependency>
    2. <groupId>org.springframework.boot</groupId>
    3. <artifactId>spring-boot-configuration-processor</artifactId>
    4. <optional>true</optional>
    5. </dependency>

    创建配置类

    1. @Data //lombok
    2. @Component //添加到组件
    3. @ConfigurationProperties(prefix = "person1")//绑定配置文件中配置类
    4. public class Person {
    5. private String name;
    6. private int age;
    7. private String[] address;
    8. }

    在测试类中使用

    1. @Autowired
    2. private Person person;
    3. @Test
    4. void test() {
    5. System.out.println(person.getName());
    6. }

    Profile

    介绍:profiles是不同配置选项的集合,它们对应于应用程序的不同运行环境,如开发环境、测试环境和生产环境。每个环境可能需要不同的设置,例如数据库连接、API端点、服务地址等。

    使用:

    1. 在application.yml中,添加spring.profiles.active属性可以指定默认使用的配置环境
    2. 在application.yml中可以使用 ${...}指定需要使用的配置

    例如:
     

    1. server:
    2. port: 8080
    3. spring:
    4. profiles:
    5. # 指定 默认使用的配置环境
    6. active: dev
    7. main:
    8. allow-circular-references: true
    9. datasource:
    10. druid:
    11. driver-class-name: ${sky.datasource.driver-class-name}
    12. url: jdbc:mysql://${sky.datasource.host}:${sky.datasource.port}/${sky.datasource.database}?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull&useSSL=false&allowPublicKeyRetrieval=true
    13. username: ${sky.datasource.username}
    14. password: ${sky.datasource.password}

    1. sky:
    2. datasource:
    3. driver-class-name: com.mysql.cj.jdbc.Driver
    4. host: localhost
    5. port: 3306
    6. database: sky_take_out
    7. username: root
    8. password: 123456

    配置加载顺序

    内部配置

    1. file:./config/:当前项目下的/config目录下
    2. file:./当前项目的根目录
    3. classpath:/config/classpath的/config目录
    4. classpath:.classpath的根目录

    加载顺序为上面的排列顺序,高优先级配置的属性会生效

    外部配置

    注意:当前项目下的/config目录下的配置文件和当前项目的根目录的配置文件因为不符合maven结构,不会被打入jar包

    1. java -jar xxxx.jar --springboot.port=端口号
    2. java -jar xxxx.jar --springboot.config.location=配置文件路径
    3. 将配置文件写在target根目录或target目录的config目录(比前面优先级高)下,可以使配置文件直接被读取
  • 相关阅读:
    vue-project-01
    五、MySQL的索引结构是什么样的?聚簇索引和非聚簇索引又是什么?
    Cpolar+Emlog搭建指南—在Ubuntu上轻松创建个人博客,无需专业技能
    国内可用免费AI工具集
    RabbitMQ集群配置以及负载均衡配置
    Fortran编程(基础语法)——笔记3
    SpringSecurity - 启动流程分析(十一)- 过滤器的执行顺序
    2、.Net 前端框架:ASP.Net Core - .Net宣传系列文章
    用手机拍商品图的技巧 、五步拍出不输相机效果的商品图、新品发朋友圈的技巧
    [XSCTF]easyxor
  • 原文地址:https://blog.csdn.net/sq91fra/article/details/139402171