0
点赞
收藏
分享

微信扫一扫

环境感知算法——4.RandLA-Net基于SemanticKITTI训练

彩虹_bd07 2023-06-03 阅读 64

在这里插入图片描述

文章目录

一、配置文件什么?

配置文件在一个项目中的作用是非常重要的,它可以帮助开发人员解决一些需要的变量和参数配置问题。

配置文件包括了很多项目所需的设置参数,例如数据库连接信息、日志文件输出路径、缓存处理方式和服务端口等。这些配置保存在文件中,通过读取和解析文件,应用程序能够快速的适配不同环境和平台,减少代码修改和发布复杂性。

总之,配置文件是非常重要的,它可以帮助开发人员更加简洁高效的编写代码,提高软件应用程序的可靠性和稳定性。
想象一下如果没有配置文件,那么SpringBoot项目就不能连接和操作数据库,甚至是不能保存用于排查问题的关键日志,配置文件的作用是至关重要的

二、配置文件格式

SpringBoot配置文件格式主要有两种:
1.properties
2.yml(yaml)
注意:
1.两个配置文件从功能上来讲是可以同时存在的,但是企业中通常会规定使用某一种格式的配置文件
2.如果两个格式的配置文件都存在,那么以properties为主

properties配置文件

properties配置文件是最早期的配置文件格式,也是创建SpringBoot项目默认的配置文件
在这里插入图片描述
基本语法:
properties是以键值的形式设置的,key,value之间是以=号连接的,例如:

# 配置项目端口号
server.port=8888
# 配置数据库url
spring.datasource.url="jdbc:mysql://127.0.0.1:3306/student?characterEncoding=utf8&useSSL=false"
# 配置数据库username
spring.datasource.name="root"
# 配置数据库password
spring.datasource.password="123456"

**读取配置文件: **
我们如果想要在项目中主动的读取配置文件中的内容,可以使用@Value注解来实现,@Value注解使用${}的格式读取:

@Component
public class UserController {
    @Value("${server.port}")
    private String port;

    @PostConstruct
    public void postConsrtuct() {
        System.out.println("server.port: " + port);
    }
}

在这里插入图片描述
我们也可以自定义配置项

# 自定义配置项
test = myProperties

在这里插入图片描述
在这里插入图片描述
properties优缺点分析:
优点:
1.系统默认的配置文件
2.properties配置项优先级比yml高
3.格式简单、不容易出错
缺点:
在这里插入图片描述
写法比较冗余

yml配置文件能够解决这个问题

yml配置文件

yml是YMAL(Yet Another Markup language)的缩写,翻译为另一种标记语言。yml可读性高,易于理解,可以简单表达数组,散列表等数据。
yml最大的优势: 可以跨语言,不止可以在Java中使用,还可以golang、python都可以使用yaml作为配置文件

基本语法:
yml是树型结构配置文件,基础语法是key : value,特别需要注意的是key和value之间需要使用英文冒号加空格,空格一定是不能省略的
在这里插入图片描述
在这里插入图片描述

# 配置数据库信息
spring:
  datasource:
    url: "jdbc:mysql://127.0.0.1:3306/zd?characterEncoding=utf8&useSSL=false"
    username: "root"
    password: "123456"

我们可以发现使用yml连接数据库冗余度要低

yml进阶使用

yml配置不同类型的数据类型及null

# 字符串
value: hello
# 布尔值
value: true
value: false
# 整数
value: 16
value: 0b1010_0111_0100_1010_1110 # 二进制
# 浮点数
value: 3.15
value: 3.15e-6
# Null使用null表示
value: ~

yml读取方式与properties一致,都是使用@Value注解,${}获取
在这里插入图片描述

@Component
public class UserController {

    @Value("${hello}")
    private String hello;
    @Value("${bool}")
    private boolean bool;
    @Value("${flo}")
    private float flo;


    @PostConstruct
    public void postConsrtuct() {
        System.out.println("hello: " + hello);
        System.out.println("bool: " + bool);
        System.out.println("flo: " + flo);
    }
}

在这里插入图片描述
当我们去获取配置中不存在的结果会报异常
在这里插入图片描述
注意事项:
如果我们的value值加了单双引号会有什么变化?
我们的字符串默认不用加单双引号,如果加英文的单双引号可以表示特殊的含义。

在这里插入图片描述

@Component
public class UserController {
    @Value("${hello}")
    private String hello;
    @Value("${hello1}")
    private String hello1;
    @Value("${hello2}")
    private String hello2;

    @PostConstruct
    public void postConsrtuct() {
        System.out.println("hello: " + hello);
        System.out.println("hello1: " + hello1);
        System.out.println("hello2: " + hello2);
    }
}

在这里插入图片描述
字符串默认是不加引号的。
单引号则会对字符串里面的特殊字符进行转义。比如,对于“/n”这种特殊字符,如果使用单引号进行包裹,则会以字符串形式输出“/n”,而不是进行换行符转义。
双引号不会对字符串里面的特殊字符进行转义,也就是转义字符该是什么意思就是什么意思。比如,“/n”表示换行符,将在输出时进行转义。

配置对象

我们配置对象在yml中有两种写法:

# 方法1
student:
  name: zd
  age: 19
# 方法2 行内写法
student: {name: zd,age: 19}

我们在获取配置中的对象时就不能使用@Value来读取了,要使用另一个注解@ConfigurationProperties来读取

@ConfigurationProperties("student")
@Component
@Date
public class StudentComponent {
    private String name;
    private int age;
}
//调用类
@Component
public class UserController {
    @Autowired
    private StudentComponent student;

    @PostConstruct
    public void postConsrtuct() {
        System.out.println(student);

    }
}

在这里插入图片描述

配置集合

配置日期:
在这里插入图片描述

@Component
public class UserController {
    @Value("${mydate}")
    private Date date;

    @PostConstruct
    public void postConsrtuct() {
        System.out.println(date);
    }
}

配置数组:

# 方式1:
subjects:
  -pe
  -english
  -math
# 方式2
subjects: [pe,english,math]
@Component
public class UserController {
    @Value("${subjects}")
    private String[] subjects;

    @PostConstruct
    public void postConsrtuct() {
        System.out.println(Arrays.toString(subjects));
    }
}

在这里插入图片描述
配置map(Map<String,Object>):

maps: {k1: v1,k2: v2}

properties与yml的区别

1.properties是以key = value的形式配置的键值类型的配置文件,而yml使用的是类似于json格式的树型配置方式进行配置的,yml层级之间使用的是换行缩进的方式配置的,key和value之间使用 : 英文冒号加空格的方式设置的,空格不可省略
2.properties为早期并且默认的配置文件格式,但配置存在一定的冗余数据,使用yml可以很好的解决数据冗余问题
3.yml通用性更好,支持更多语言,如Java、Go、Python,如果是云开发,可以使用一份yml配置文件作为Java和Go的共同配置文件
4.yml和properties可以共存,但一个项目中建议使用统一的配置类型文件

设置不同环境的配置文件

SpringBoot不同平台的配置规则:
1.必须有主配置文件,主配置文件名必须是application.yml(.properties)
在这里插入图片描述
2.不同平台有不同的配置文件,配置文件的名称有要求 application-xxx.(yml、properties)
在这里插入图片描述
我们一般将公共的配置项放在主配置文件中

在application.yml中设置运行环境:

spring:
  profiles:
    active: dev

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

举报

相关推荐

0 条评论