0%

有时候我们需要在配置文件里面配置一些数组。以下示例是配置的二维数组,如果把 kv 键值分开来看,可以算作三维数组。

application.yaml

1
2
3
4
5
6
7
8
9
10
11
12
config:
arrs:
-
- k: a1k
v: a1v
- k: a2k
v: a2v
-
- k: b1k
v: b1v
- k: b2k
v: b2v

ArrsConfig.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
package gy.finolo;

import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.context.annotation.Configuration;

import java.util.List;


@Configuration
@ConfigurationProperties("config")
@Data
public class ArrsConfig {

private List<Kv>[] arrs;

@Data
public static class Kv {

public String k;
private String v;
}

}

需要特别注意,这里定义了一个 Kv 静态内部类,必须为 public static,属性如果使用 private,那就必须得到 getter/setter 方法,这里我使用了 @Data 注解,自动生成了
getter/setter 方法

需要使用配置变量的文件。

1
2
3
4
5
@Autowired
private ArrsConfig config;

config.getArrs()[0].get(0).k
config.getArrs()[1].get(1).getV()

IntelliJ IDEA 版本:Ultimate 2019.1

spring-boot-starter-parent: 2.2.0.RELEASE

我们在运行 test case 时,会一直卡住,resolving maven dependencies… org.junit.platform:junit-platform-launcher:1.5.2,超时以后就 Failed 了。

这是 IDEA 的一个bug,解析 artifact 时,没有用到 maven 的 user settings file

解决办法:

在 pom.xml 文件中添加如下依赖:

1
2
3
4
5
<dependency>
<groupId>org.junit.platform</groupId>
<artifactId>junit-platform-launcher</artifactId>
<scope>test</scope>
</dependency>

当 Redis 设置了密码信息,我们通过客户端访问时,就会报错:(error) NOAUTH Authentication required

使用auth <password>命令,输入密码就可以解决。<password>就是你填入密码的位置。

1
2
3
4
5
6
7
8
# ./redis-cli 
127.0.0.1:6379> get name
(error) NOAUTH Authentication required.
127.0.0.1:6379> auth <password>
OK
127.0.0.1:6379> get name
"finology"
127.0.0.1:6379>